【问题标题】:Swift animation completion bug with release build settings带有发布构建设置的 Swift 动画完成错误
【发布时间】:2015-01-30 12:52:09
【问题描述】:

有两种视图控制器,Initial 和 modal。我们在初始控制器中有动画,在模态控制器中也有动画。每个动画都有完成块。我们将构建方案 Run –> Build configuration 设置为 Release。运行应用程序,转到模态控制器并运行动画。在动画之后(在模态控制器中),初始控制器中的动画完成块被调用,而不是模态控制器中的完成块。有没有人也遇到过这种情况?有什么建议吗?

Sample project here (产品 -> 方案 -> 编辑方案 -> 运行 -> 构建配置:发布)

【问题讨论】:

    标签: ios iphone swift ios8


    【解决方案1】:

    这绝对是一个优化错误。

    我发现的一个快速解决方法是将 completions: 闭包转换为 @objc_block

    视图控制器:

        UIView.animateWithDuration(0.3,
            delay: 0.0,
            options: UIViewAnimationOptions.CurveEaseInOut,
            animations: { () -> Void in
                self.rectangleView.alpha = 1.0
            },
            completion: { (complete) -> Void in
                println("111 Hello ViewController 1")
            } as @objc_block (Bool) -> Void
            //   ^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
    

    ViewController2:

        UIView.animateKeyframesWithDuration(duration,
            delay: 0.0,
            options: UIViewKeyframeAnimationOptions.CalculationModeLinear,
            animations: { () -> Void in
                UIView.addKeyframeWithRelativeStartTime( 0.0,
                    relativeDuration: (duration / 2),
                    animations: { () -> Void in
                        self.rectangleView.alpha = 0.1
                    }
                )
                UIView.addKeyframeWithRelativeStartTime(
                    (duration / 2),
                    relativeDuration: (duration / 2),
                    animations: { () -> Void in
                        self.rectangleView.backgroundColor = UIColor.blueColor()
                    }
                )
            },
            completion: { (complete) -> Void in
                println("Hello ViewController 2")
            } as @objc_block (Bool) -> Void
            //   ^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多