[关闭]
@lvcloud 2016-09-13T20:28:43.000000Z 字数 843 阅读 318

Swift 中的Autolayout和相应的动画

swift xcode


Autolayout的概念

简直要崩溃,没有一个能把话说清楚的,到处都是坑。

Autolayout的观念是为组件(主要是UIView和UIButton)增加约束

一个约束是一个 NSLayoutConstraint 实例。

要使用约束,需要 把被约束组件(子物体)的一个属性 关掉:

subView.translatesAutoresizingMaskIntoConstraints = false

然后将约束添加在 父物体 上。

  1. let testWidth = NSLayoutConstraint(
  2. item: v1,
  3. attribute: .Width,
  4. relatedBy: .Equal,
  5. toItem: nil,
  6. attribute: .Width,
  7. multiplier: 1,
  8. constant: 120
  9. )
  10. self.view.addConstraint(testWidth)

一个约束包括7个属性,其对应的效果公式是:

item1.attribute1 = multiplier × item2.attribute2 + constant

另外注意,addConstraint 方法一次添加一个约束,addConstraints 方法一次添加多个约束,参数是一个 约束数组,像这样:

self.view.addConstraints([btnWidth, btnHeight, btnX, btnY])

对于一个子物体来说,必须添加 足够的、且互相不矛盾 的约束才能正确显示。

使用动画

动画的创建方法是:

  1. UIView.animateWithDuration(1, animations: {
  2. self.testView.frame.size.height = 100
  3. self.view.layoutIfNeeded()
  4. self.testView2.center.y += 20
  5. })

注意中间那个 layoutIfNeeded() 方法,如果动画不如意的时候就试试把这句加在不同的位置,效果会不一样…… 但到底什么原理没有搞明白。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注