【问题标题】:animateWithDuration in Swift - Could not find member 'CurveEaseOut'Swift 中的 animateWithDuration - 找不到成员“CurveEaseOut”
【发布时间】:2015-04-01 15:17:42
【问题描述】:

尝试在 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()?我尝试了各种不同的类型,但找不到解决方案。

【问题讨论】:

    标签: swift animatewithduration


    【解决方案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)
    

    【讨论】:

    • 谢谢,克里斯托斯。这是一个可选的,所以我需要使用 if let 来解开它。
    【解决方案2】:

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

    let turn: CGFloat = 180.0
    

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

    由于 Swift 是类型安全的,它期望将 CGFloat 传递给 CGAffineTransformMakeRotation

    【讨论】:

      【解决方案3】:

      问题是因为您使用了变量 turn。您在闭包内使用 turn 并且必须使用 self.turn 因为 turn 是在动画闭包范围之外声明的。

      很奇怪,但就是这样:\

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多