iOS 9.0 引入了一些新的关于 Auto Layout 的 APIs,其中一个就是 NSLayoutAnchor
。
在 iOS 8.0 中,约束的书写方式通常像下面这样:
view2.translatesAutoresizingMaskIntoConstraints = false
let constraint = NSLayoutConstraint(item: view2,
attribute: .Top,
relatedBy: .Equal,
toItem: view1,
attribute: .Top,
multiplier: 1,
constant: 0)
constraint.active = true
而在 iOS 9.0 中,上面的代码可以简化成下面这样:
view2.translatesAutoresizingMaskIntoConstraints = false
view2.topAnchor.constraintEqualToAnchor(view1.topAnchor).active = true
那么为了在 iOS 8.0 中也可以有 9.0 中那样便捷的 APIs,我参照 9.0 的 APIs 使用了一点点的代码进行封装,于是上面的代码在 8.0 中可以变成这样:
view2.top.eq(view1.top)
相关代码只有短短几行,源码在 MCDLayout。