Ios Swift 2.0了解动画结束时动画的工作原理

Ios Swift 2.0了解动画结束时动画的工作原理,ios,swift,animation,closures,Ios,Swift,Animation,Closures,UIView.animationWithDuration易于使用: UIView.animateWithDuration(1.0) { self.someView.alpha = 1.0 } 函数如何更新闭包中的变量以进行动画处理,而不是在第一次迭代时跳到alpha=1.0?这是因为CALayer的特殊设计。每个CALayer都有两个概念层,都作为属性公开。还有modelLayer,您可以通过someView.alpha等属性访问和修改它,它通常保存层的状态。修改相关特性时,无论是否在

UIView.animationWithDuration易于使用:

UIView.animateWithDuration(1.0) {
    self.someView.alpha = 1.0
}

函数如何更新闭包中的变量以进行动画处理,而不是在第一次迭代时跳到alpha=1.0?

这是因为CALayer的特殊设计。每个CALayer都有两个概念层,都作为属性公开。还有modelLayer,您可以通过someView.alpha等属性访问和修改它,它通常保存层的状态。修改相关特性时,无论是否在UIView动画块内,模型层都会立即更新。然后还有presentationLayer,它实际上是由系统渲染的。表示层通常镜像模型层,但设置动画时除外。我不知道具体细节,但UIView.animateWithDuration会告诉CoreAnimation,当我运行此动画块时,记录模型层diff前后的更改,然后在给定的持续时间内将其增量应用于表示层


这就是为什么尽管动画尚未完成,someView.alpha仍会立即更新,因为您的代码正在与模型层交互。如果您访问表示层,您将看到更新的值是以增量方式应用的。

什么意思?你说要设置动画,这是一个可设置动画的属性,所以它会设置动画,因为你这么说!它在事务结束时创建动画,并将其交给动画服务器。你想要什么样的信息?我如何构造自己的对象,然后使用闭包在swift中设置动画或具有迭代属性?这是一个很好的问题。你为什么不问这个问题?从这里看来,这个问题与函数如何更新变量是一样的。。。但是我想总有混乱和否决票的空间:]哈哈,真的,我很惊讶你没有要求现金奖励。很酷,马特,你可以坚持住,那不是真的。您可以使自己的自定义视图属性与UIView.animateWithDuration一起工作。@对不起,您说得对。我删除了答案中的这一部分,因为OP没有明确询问他自己的属性的动画设置。他继续拒绝询问,尽管这实际上是他想知道的。@PatrickGoley谢谢,这是对我所问问题的一个很好的解释,它给了我在文档中阅读的方向。