@lvcloud
2016-09-13T20:28:43.000000Z
字数 843
阅读 318
swift xcode
简直要崩溃,没有一个能把话说清楚的,到处都是坑。
Autolayout的观念是为组件(主要是UIView和UIButton)增加约束。
一个约束是一个 NSLayoutConstraint 实例。
要使用约束,需要 把被约束组件(子物体)的一个属性 关掉:
subView.translatesAutoresizingMaskIntoConstraints = false
然后将约束添加在 父物体 上。
let testWidth = NSLayoutConstraint(item: v1,attribute: .Width,relatedBy: .Equal,toItem: nil,attribute: .Width,multiplier: 1,constant: 120)self.view.addConstraint(testWidth)
一个约束包括7个属性,其对应的效果公式是:
item1.attribute1 = multiplier × item2.attribute2 + constant
另外注意,addConstraint 方法一次添加一个约束,addConstraints 方法一次添加多个约束,参数是一个 约束数组,像这样:
self.view.addConstraints([btnWidth, btnHeight, btnX, btnY])
对于一个子物体来说,必须添加 足够的、且互相不矛盾 的约束才能正确显示。
动画的创建方法是:
UIView.animateWithDuration(1, animations: {self.testView.frame.size.height = 100self.view.layoutIfNeeded()self.testView2.center.y += 20})
注意中间那个 layoutIfNeeded() 方法,如果动画不如意的时候就试试把这句加在不同的位置,效果会不一样…… 但到底什么原理没有搞明白。