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

你可以做两件事。你也可以

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 因为 turn 是在动画闭包范围之外声明的。

很奇怪,但就是这样:\

于 2015-04-01T15:27:55.340 回答