2016-04-08 10 views
0

私はアニメーションを使って2つの色の間のボタンをフェードインし、ボタンを押したときに現在の色を取得する必要があります。ここでSwiftのアニメーション中にUIViewの色を取得しますか?

は、アニメーションのコードです:targetView.layer.backgroundColorを使用して色を読み取る

UIView.animateWithDuration(speed, delay: 0.0, options:[UIViewAnimationOptions.Repeat, UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.AllowUserInteraction, UIViewAnimationOptions.CurveEaseOut], animations: { 
      targetView.layer.backgroundColor = self.randomColors(40).CGColor 
      targetView.layer.backgroundColor = self.randomColors(250).CGColor 

      }, completion: nil) 

は私に毎回ではなく、その特定の瞬間に色を同じ結果になります。私はスクリーン上の特定のピクセルの色を無駄にするためにいくつかの関数を試しましたが、毎回同じ色を返します。

ボタンを押してもアニメーションを続ける必要はありません。ボタンを押した時点で色を取得するだけです。

何か助けが素晴らしい、ありがとう!

答えて

1

presentationLayerを使用すると、現在実行中のアニメーションを含め、特定のレイヤーのオンスクリーン状態を概算することができます。オプションのAnyObjectが返されますので、正しくアンラップする必要があります。例えば

:このから返さ層がコピーであること

if let presentationLayer = targetView.layer.presentationLayer() as? CALayer { 
    let currentBackgroundColor = presentationLayer.backgroundColor 
} 

注 - 、したがってへの修正がどこ反映されません。

+0

ありがとうございました!それはまさに私が後にしたことでした。とても有難い。 – Stephen

+0

@Stephen喜んで:) – Hamish

関連する問題