Drafter是一组围绕创建和访问NSLayoutConstraints的简单封装调用,使得在程序化创建它们时更简洁。它允许以比标准NSLayoutConstraint创建方法更简洁的方式表达许多常见的约束创建操作。
要运行示例项目,首先克隆存储库,然后在示例目录中运行pod install
。
确保您导入了Drafter模块。import Drafter
这些方法都是UIView
上的一个类别,因此您需要在想要影响的视图中调用这些方法。
目前,所有对约束的访问都通过变量接口呈现。它们遍历适当的约束,找到正确的正确一个。
view.pinedLeftConstraint
view.pinnedRightConstraint
view.pinnedTopConstraint
view.pinnedBottomConstraint
// Note these only access height constraints that are to a constant, not bounded to a view.
view.pinnedHeightConstraint
view.pinnedWidthConstraint
所有创建方法都有可选项参数
active
,默认true
priority
,默认UILayoutPriorityRequired
除非另有说明,否则它们都返回NSLayoutConstraint
将视图边缘各自与其容器固定。如果调用者没有superview
则会导致崩溃。固定方法有一个可选参数padding
,默认0.0
view.pinTopSpaceToContainer()
view.pinLeftSpaceToConainer()
view.pinRightSpaceToContainer()
view.pinBottomSpaceToContainer()
填充方法是针对简化使用而大规模固定到容器的功能
填充有一个可选参数insets
,默认UIEdgeInsetsZero
// NOTE: This method returns a named tuple mimicking `UIEdgeInsets` but with constraints
view.fillContainer()
居中接口与锚点类似,但它基于你指定的轴进行居中。如果没有指定轴,它将在两个维度上居中。如果没有调用者具有 superview
,则可能会失败。
居中约束有一个可选参数 offset
。默认值为 0.0
。
view.centerInContainer(.Horizontal)
view.centerInContainer(.Vertical)
// NOTE: This method returns a named tuple mimicking `CGPoint` but with constraints
view.centerInContainer()
您可以直接设置视图的大小,或者将其绑定到另一个视图。
视图绑定函数有一个可选参数 multiplier
。默认值为 1.0
。
view.pinHeight(toView: v)
view.pinHeight(toHeight: h)
view.pinWidth(toView: v)
view.pinWidth(toWidth: w)
// NOTE: This method returns a named tuple mimicking `CGSize` but with constraints.
// this method doesn't take a multiplier
view.pinSize(toSize: s)
此接口要求你传递希望对其对齐的调用者的视图。我们不强制定义的两个视图位于同一继承层次中,因此你必须对此格外小心。
这些有一个可选参数 offset
。默认值为 0.0
。
view.alignLeft(toLeftOfView: v)
view.alignRight(toRightOfView: v)
view.alignBottom(toBottomOfView: v)
view.alignTop(toTopOfView: v)
view.attachLeft(toRightOfView: v)
view.attachRight(toLeftOfView: v)
view.attachBottom(toTopOfView: v)
view.attachTop(toBottomOfView: v)
// NOTE the following return an array of constraints
// these have an optional param realtion. Default .Equal
view.align(subviews: vs, attribute: NSLayoutAttribute)
view.space(subviews: vs, alongAxis: UILayoutConstraintAxis,
isPositive: true) // optional: defaults to true
github: @mattThousand,电子邮件:[email protected],twitter: @mattThousand
github: @dostrander,电子邮件:[email protected],twitter: @_derko
Drafter 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。