EZAnchor
更简单的 Autolayout 编码方式
- 在使用 Autolayout Anchors 不断编码
.active = true
是否让您感到烦恼? - 是否因为反复编写如此长的约束语句
refreshView.heightAnchor.constraint(equalToConstant: self.refreshViewHeight).isActive = true
而感到烦恼?
现在,通过简单的安装,EZAnchor
一定可以缩短您编写 Autolayout Anchors 的时间。让我们一起看看它是如何工作的。
- 锚约束到另一个锚
//Traditional way
viewA.leadingAnchor.constraint(equalTo: viewB.leadingAnchor).isActive = true
//With EZAnchor
viewA.leading == viewB.leading
- 带有常数的锚约束到另一个锚
//Traditional way
viewA.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 10).isActive = true
//With EZAnchor
viewA.leading == self.view.leading + 10
- 带有负常数的锚约束到另一个锚
//Traditional way
viewA.leadingAnchor.constraint(equalTo: viewB.leadingAnchor, constant: -10).isActive = true
//With EZAnchor
viewA.leading == viewB.leading - 10
- 锚不小于等于另一个锚
//Traditional way
viewA.leadingAnchor.constraint(lessThanOrEqualTo: viewB.leadingAnchor).isActive = true
//With EZAnchor
viewA.leading <= viewB.leading
- 锚不大于等于另一个锚
viewA.leadingAnchor.constraint(greaterThanOrEqualTo: viewB.leadingAnchor).isActive = true
//With EZAnchor
viewA.leading >= viewB.leading
- 带有常数的锚不小于等于另一个锚
viewA.leadingAnchor.constraint(lessThanOrEqualTo: viewB.leadingAnchor, constant: 10).isActive = true
//With EZAnchor
viewA.leading <= viewB.leading + 10
- 带有常数的锚不大于等于另一个锚
//Traditional way
viewA.leadingAnchor.constraint(greaterThanOrEqualTo: viewB.leadingAnchor, constant: 10).isActive = true
//With EZAnchor
viewA.leading >= viewB.leading - 10
- 带有常数的锚和倍数的等价于另一个锚
//Traditional way
viewA.heightAnchor.constraint(equalTo: viewB.heightAnchor, multiplier: 0.1, constant: -10).isActive = true
//With EZAnchor
viewA.height == viewB.height * 0.1 - 10
- 与优先级一起工作
//With EZAnchor
viewA.leading == (viewB.leading + 0.1) ^ .defaultLow
安装
拖放
直接将 EZAnchor
拖放到您的 Xcode 项目中。
CocoaPods
要使用 CocoaPods 将 EZAnchor 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它
target 'MyApp' do
pod 'EZAnchor'
end
Carthage
要使用Carthage将EZAnchor集成到您的Xcode项目中,请在Cartfile中指定它:即将推出
运行carthage update以构建框架,然后将构建的EZAnchor.framework拖放到您的Xcode项目中。
演示
您可以使用非常简单和干净的代码轻松实现以下布局
//set viewA's layout constraints
viewA.backgroundColor = UIColor.red
viewA.width == 200
viewA.width == viewA.height
viewA.centerX == view.centerX
viewA.centerY == view.centerY
//set viewB's layout constraints
viewB.top == viewA.bottom + 20
viewB.width == viewA.width * 0.5
viewB.height == viewB.width - 10
viewB.centerX == viewA.centerX
限制
-
最好有一些对锚的初步了解,熟悉通过编程方式创建锚。如果不熟悉,请从这个链接学习:[通过编程方式创建约束](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html)!
-
请避免定义具有与
height
或width
相同的名称的自定义UIControl
或视图,可能会有与EZAnchor
库冲突。
其他
WTF Autolayout可以帮助您调试autolayout错误。
Logo是用Shopify logo maker生成的。
PureLayout,Stevia,layout。
灵感来源于:待办事项
- 单元测试
- UI 测试
- 持续集成
- Fastlane
许可证
本代码和工具受MIT许可证保护。