测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可协议 | MIT |
发布最后发布 | 2016年9月 |
SPM支持SPM | ✗ |
由Steve Madsen、James Neno、Jeff Turner、Matt Sullivan维护。
FluentConstraints是一个Swift框架,旨在使在Swift代码中处理Auto Layout约束变得更加容易。虽然Xcode在Interface Builder中提供了出色的Auto Layout支持,但有时您不可避免地需要在代码中构建UI。使用弹力和压力组件并没有那么糟糕,但Auto Layout需要至少两个约束来定位视图,通常更多。视觉语言有一些帮助,但非常有限。NSLayoutConstraint(item:attribute:relatedBy:toItem:attribute:multiplier:constant:)
提供了最大的灵活性,但一行中连续使用几个初始化器会变得难以阅读。
例如,这
let heightConstraint = NSLayoutConstraint(item: subView, attribute: .Height,
relatedBy: .Equal, toItem: self.view, attribute: .Height, multiplier: 1.0,
constant: 0.0)
heightConstraint.active = true
可以写成
let heightConstraint = FluentConstraint(subView).height.equalTo(self.view).height
.activate()
这里有一个更复杂的例子。该视图从父视图边缘缩进20点
let leftConstraint = NSLayoutConstraint(item: subView, attribute: .Leading,
relatedBy: .Equal, toItem: subView.superview, attribute: .Leading,
multiplier: 1.0, constant: 20)
let rightConstraint = NSLayoutConstraint(item: subView, attribute: .Trailing,
relatedBy: .Equal, toItem: subView.superview, attribute: .Trailing,
multiplier: 1.0, constant: -20)
let topConstraint = NSLayoutConstraint(item: subView, attribute: .Top,
relatedBy: .Equal, toItem: subView.superview, attribute: .Top,
multiplier: 1.0, constant: 20)
let bottomConstraint = NSLayoutConstraint(item: subView, attribute: .Bottom,
relatedBy: .Equal, toItem: subView.superview, attribute: .Bottom,
multiplier: 1.0, constant: -20)
NSLayoutConstraint.activateConstraints([leftConstraint, rightConstraint, topConstraint,
bottomConstraint])
可以使用FluentConstraintSet
编写如下
let constraints = FluentConstraintSet(subView).inset(20).inSuperview.activate()
框架大部分可以与Objective-C桥接,但关系属性/函数除外,这实际上使得从Objective-C中不可用。抱歉。
FluentConstraints需要iOS 8或更高版本。当前没有Mac OS X目标,尽管代码中没有特定于iOS的部分。
git submodule add https://github.com/northwoodspd/FluentConstraints.git
FluentConstraints是由@sjmadsen和@msullivan247在“想象力日”项目期间编写的。
如果您希望贡献,请
测试是用XCTest编写的,但使用Nimble匹配器框架。您需要在分叉前运行pod install
以运行测试。
FluentConstraints是在MIT许可协议下提供的。