- iOS and Mac OS X platforms currently in use the fastest the simplest development to build the UI layout automatically open source library, strong dynamic layout constraint handling capacity
- Service to update constraints, convenient and quick dynamic UI layout.
Objective-c version 👉 WHC_AutoLayout
布局api内部自动支持兼容处理iphonex头部齐刘海和底部黑线
添加UILayoutGuide,safeAreaLayoutGuide约束支持
重构布局核心升级基于二叉树层遍历算法搜索约束主视图,对于自动处理跨视图层复杂约束关系更健壮从容
封装集成抗拉伸和抗压缩api支持链式调用
- Adopt chain layout Api calls convenient
- Include one line of code to calculate UITableViewCell highly module
- Contains WHC_StackView module (UIStackView purpose alternative system)
- Automatic identification of the same type conflict and update the new constraints
- Support change constraints priority
- Support delete constraints
- Support iOS and Mac OS X
- Automatic covering and modify the conflict with type constraints
- iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+
- Xcode 8.0 or later
- Swift 5.1
- If you want to use swift3.2, please pod WHC_Layout '~> 1.0.9'
- When the view call removeFromSuperview() the view must call whc_ResetConstraints() to clear the cache constraint
- Swift5 + has abandoned the initialize class method, and if you need to use the automatic computing UITableViewCell height, you can call UITableview.whc_initconfig () in the AppDelegate initialization method.
- CocoaPods: pod 'WHC_Layout'
let guide = UILayoutGuide()
let view = UIView()
guide.whc_Left(10)
.whc_Top(0, toView: self.view.safeAreaLayoutGuide)
.whc_Right(10)
.whc_Height(30)
view.whc_Left(10)
.whc_Right(10)
.whc_Top(0, toView: guide)
.whc_Height(50)
view.whc_Left(10)
.whc_Top(10)
.whc_Right(10)
.whc_HeightAuto()
view.whc_Width(100).whc_LessOrEqual()
.whc_Width(20).whc_GreaterOrEqual()
view.snp.updateConstraints {(make) -> Void in
make.top.equalTo(superview.snp_top).with.offset(10)
make.left.equalTo(superview.snp_left).with.offset(20)
make.bottom.equalTo(superview.snp_bottom).with.offset(-10)
make.right.equalTo(superview.snp_right).with.offset(-10)
}
Modify the view to the left from 20 other views
view.whc_Left(20)
// or
view.whc_Left(20, toView: otherView)
If the view of xib leading now amended as left constraints
/// First remove the xib view of leading and then add new constraints
view.whc_RemoveAttrs(.leading)
.whc_Left(10)
Remove all constraints associated with view left
view.whc_RemoveAttrs(.left)
To remove multiple constraints associated with view
view.whc_RemoveAttrs(.left, .leading, .top)
// or
view.whc_RemoveTo(linkView, attrs: .left ...)
Modify the view constraint for low priority right
view.whc_Right(10)
.whc_PriorityLow()
// The higher the priority, the less likely to be stretched
// 设置抗拉伸优先级,优先级越高越不容易被拉伸
label.whc_ContentHuggingPriority(.defaultLow, for: .horizontal)
// 设置抗压缩优先级,优先级越高越不容易被压缩
// Compression priority, the higher the priority the less easy to be compressed
label.whc_ContentCompressionResistancePriority(.defaultLow, for: .horizontal)
No reuse way calculated cell height
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewCell.whc_CellHeightForIndexPath(indexPath, tableView: tableView)
}
Reuse way calculated cell height
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewCell.whc_CellHeightForIndexPath(indexPath,
tableView: tableView,
identifier: "kFirendsCircleCellIdentifier",
layoutBlock: { (cell) in
/// use model layout cell
cell.setFriendModel(model)
})
}
Create WHC_StackView
let stackView = WHC_StackView()
self.view.addSubview(stackView)
Add constraint
stackView.whc_Left(10)
.whc_Top(10)
.whc_Right(10)
.whc_HeightAuto()
Configuration stackView
1. Set the padding
stackView.whc_Edge = UIEdgeInsetsMake(10, 10, 10, 10) // 内边距
2. Set the layout direction
stackView.whc_Orientation = .Vertical // 自动垂直布局
3. Set the child views lateral clearance
stackView.whc_HSpace = 10 // 子视图横向间隙
4. Set the child views vertical clearance
stackView.whc_VSpace = 10 // 子视图垂直间隙
5. Add subview and start the layout
for _ in 0 ... 3 {
let view = UIView()
stackView.addSubview(view)
}
stackView.whc_StartLayout()
For more UI layout automatically, WHC_StackView components, one line of code to calculate the cell height module, please download this demo to check the specific usage
All source code is licensed under the MIT License.