一套自定义 Swift 运算符,用于创建 NSLayoutConstraints。
有时您需要在代码中进行自动布局,而且很多时候这很糟糕。您需要使用带有超长方法的 NSLayoutConstraint,或者使用自动布局格式字符串。我想测试 Swift 自定义运算符,并且发现大量简单的自动布局约束代码让人很不舒服。通过这些简单运算符,我可以减少代码量,并在创建约束时清晰地了解自己在做什么。
嵌入式框架需要 iOS 8 或 OS X Mavericks 或更高版本的最小部署目标。
您只需要学习 3 个概念
<> 表示约束关系中的第一个项目,相当于 NSLayoutConstraint 中的 item 参数。
* 表示相反。例如,在水平尾部关系中,“<><” 中的 * 表示垂直“*<><”。
<^> 表示顶部,因此如果您想使 view1 的顶部与 view2 的顶部对齐,您只需要“view1<^>(view2,0)”。而且,您说得对,“*<^>” 是底部!
EasyConstraints 只包括一些约束,这是因为我最初将其作为一个学习项目。所有的运算符都接受一个视图和一个包含视图、常量以及可选的 NSLayoutRelation 参数的元组。如果需要定义不同的 NSLayoutRelation 来等于(默认),可以使用该参数。
以下是 EasyConstraints 现在包含的运算符
EasyConstraints
view1<^>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0)
EasyConstraints
view1*<^>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)
EasyConstraints
view1<<>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
EasyConstraints
view1<>>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0)
EasyConstraints
view1><>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0)
EasyConstraints
view1<><(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
EasyConstraints
view1*><>(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)
EasyConstraints
view1*<><(view2,0)
使用 NSLayoutConstraint 构造函数
NSLayoutConstraint(item: view1, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view2, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0)
也许您讨厌这个想法,喜欢它,或者想要创建一个 PR。任何反馈都受欢迎。