Swift 中的 animateWithDuration - 找不到成员 'CurveEaseOut'
animateWithDuration in Swift - Could not find member 'CurveEaseOut'
在 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()?我尝试了各种不同的类型,但找不到解决方案。
你可以做两件事。你可以
let turn: CGFloat = 180.0
或
CGAffineTransformMakeRotation((CGFloat(turn) * CGFloat(M_PI)) / CGFloat(turn))
因为 Swift 是类型安全的,它期望 CGFloat 传递给 CGAffineTransformMakeRotation
.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)
问题是因为您正在使用变量 turn。您在闭包内使用 turn 并且必须使用 self.turn 因为 turn 声明在动画闭包的范围之外。
很奇怪,但事实就是这样:\
在 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()?我尝试了各种不同的类型,但找不到解决方案。
你可以做两件事。你可以
let turn: CGFloat = 180.0
或
CGAffineTransformMakeRotation((CGFloat(turn) * CGFloat(M_PI)) / CGFloat(turn))
因为 Swift 是类型安全的,它期望 CGFloat 传递给 CGAffineTransformMakeRotation
.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)
问题是因为您正在使用变量 turn。您在闭包内使用 turn 并且必须使用 self.turn 因为 turn 声明在动画闭包的范围之外。
很奇怪,但事实就是这样:\