孕孕的三个问题之——Auto Layout 怎么做动画
使用了 Auto Layout 之后,由于布局引擎已经从根本上不同,所以我们就需要改变“直接修改 frame”这种操控动画的方式了。其实 Auto Layout 做动画的原理说起来也很简单:先修改某一个或者几个约束的值,再使用动画语句应用这些值:
// 修改从 StoryBoard 绑定到类的约束的值 self.verticalSpaceConstraintOfButtonToLabel.constant += 100 // 在动画闭包里对其父级进行 layoutIfNeeded() UIView.animateWithDuration(0.5, animations: { () -> Void in self.view.layoutIfNeeded() })
以上代码出自于某次分享:https://github.com/johnlui/AutoLayout
想深入的同学可以阅读Auto Layout 使用心得(六)—— 制造炫酷的下拉刷新动画,我近期准备对这一系列的文章进行重写,更深入一些。
就这么简单。约束也可以绑定到类,这也是我某次脑洞大开想到的,其实可视化编程还有许多隐藏的强大功能等着我们去挖掘。
Notice:
- iOS 8 及以前,大部分时候我们都可以采用对元素本身进行 layoutIfNeeded() 来进行动画
- iOS 9 引入的一些新特性将这种成功率大幅降低了,所以现在请大家遵循官方文档,对其父级进行 layoutIfNeeded() 以保证成功率。
发表评论: