1

Swift でアニメーションに変数を渡そうとすると、次のエラーが発生します。

Could not find member 'CurveEaseOut'

度を手動で入力すると、私のコードは問題ないようです。

UIView.animateWithDuration(2.0, delay: NSTimeInterval(0.0), options: .CurveEaseOut, animations: {
        self.arrowImage.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI)) / 180.0)
    }, completion: nil)

しかし、変数を使用しようとすると問題が発生します。

var turn = Double()

turn = 180.0

UIView.animateWithDuration(2.0, delay: NSTimeInterval(0.0), options: .CurveEaseOut, animations: {
        self.arrowImage.transform = CGAffineTransformMakeRotation((turn * CGFloat(M_PI)) / turn)
    }, completion: nil)

おそらく、それは私の Double() の使用でしょうか? さまざまなタイプを試しましたが、解決策が見つかりません。

4

3 に答える 3

1

できることは 2 つあります。あなたはどちらかできます

let turn: CGFloat = 180.0

また

CGAffineTransformMakeRotation((CGFloat(turn) * CGFloat(M_PI)) / CGFloat(turn))

Swift はタイプ セーフであるため、CGFloat が渡されることを期待しています。CGAffineTransformMakeRotation

于 2015-04-01T15:24:52.343 に答える
1

.CurveEaseOut に問題はありません。私が思う問題は閉鎖の中にあります。

これを試して

var turn:CGFloat = 180.0

エラーが続く場合、arrowImage はオプションであり、if let を使用してアンラップする必要があります

UIView.animateWithDuration(2.0, delay: NSTimeInterval(0.0), options: .CurveEaseOut, animations: {
        if let ai = self.arrowImage {
             ai.transform = CGAffineTransformMakeRotation((turn * CGFloat(M_PI)) / turn)
       }
    }, completion: nil)
于 2015-04-01T15:26:38.527 に答える
0

問題は、可変ターンを使用しているためです。クロージャ内で turn を使用していますが、アニメーション クロージャの範囲外で turn が宣言されているため、self.turn を使用する必要があります。

奇妙ですが、それがその方法です:\

于 2015-04-01T15:27:55.340 に答える