简介
AutoLayout自动布局功能随着iOS6的发布横空出世,现在已经成为了iOS机型适配最佳的解决方案之一。由于自动布局的特点,对于使用自动布局功能的视图,我们不能再像之前一样去操作它的frame、center等属性,我们通过对布局约束的操作来代替之前的方法来实现动画。
自然的,你可能会问:我们如何去操作一个约束呢?
其实操作约束和操作属性的区别并不大
Animating Interface Builder constraints
这是我们Demo的模版,上方的View高度是固定的
首先我们通过连线操作将高度的约束拿到,创建一个outlet
@IBOutlet weak var menuHeightConstraint: NSLayoutConstraint!
接下来修改菜单按钮的响应方法
@IBAction func actionToggleMenu(sender: AnyObject) {
//修改开关状态
isMenuOpen = !isMenuOpen
//调整高度约束的值
menuHeightConstraint.constant = isMenuOpen ? 200.0 : 60.0
//修改Title
titleLabel.text = isMenuOpen ? "Select Item" : "Packing List"
}
这样我们就已经实现了界面的调整,怎么让它动起来呢
这里我们又要用到我们的老朋友animateWithDuration(_:animations:)
和其它几个相近API了
Animating layout changes
让我们的变化动起来!
UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 10.0, options: .CurveEaseIn, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
将上面这段代码加在后面,就可以实现动画效果了
在修改了约束后,iOS并没有机会去重新布局界面,通过在动画闭包中调用layoutIfNeeded
方法,实现了对这个界面的布局
Rotating view animations
这次我们添加一个简单的旋转动画放在动画闭包中
let angle = self.isMenuOpen ? CGFloat(M_PI_4) : 0.0
self.buttonMenu.transform = CGAffineTransformMakeRotation(angle)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。