WHC AutoLayoutKit
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,iOS/Mac OS X平台上使用简单动态布局约束处理能力
- 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. The project is written primarily in Objective-C, distributed under the MIT License license, first published in 2016. Key topics include: autocellheight, autolayout, masnory, uistackview, whc.
WHC_AutoLayout
<div align=center><img src="https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/WHC_AutoLayoutLogo.png" width = "319.5" height = "129"/></div></br>- 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.
Swift4.+ version 👉 WHC_Layout
修改ios11安全布局机制增加whc_IsSafe控制api
布局api内部自动支持兼容处理iphonex头部齐刘海和底部黑线
添加UILayoutGuide,safeAreaLayoutGuide约束支持
添加抗拉伸和抗压缩api支持链式调用
Introduce
- 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
Require
- iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+
- Xcode 8.0 or later
Note
- When the view call removeFromSuperview the view must call whc_ResetConstraints to clear the cache constraint
Install
- CocoaPods: pod 'WHC_AutoLayoutKit'
Usage
UILayoutGuide,safeAreaLayoutGuide
objectiveUILayoutGuide * guide = UILayoutGuide.new; UIView * view = UIView.new; guide.whc_LeftSpace(10) .whc_TopSpaceToView(0, self.view.safeAreaLayoutGuide) .whc_RightSpace(10) .whc_Height(30); view.whc_LeftSpace(10) .whc_RightSpace(10) .whc_TopSpaceToView(0, guide) .whc_Height(50);
Automatic height view

objectiveview.whc_LeftSpace(10) .whc_TopSpace(10) .whc_RightSpace(10) .whc_HeightAuto();
Use lessEqual or greaterEqual (width <= 100 && width >= 20)
objectiveview.whc_Width(100).whc_LessOrEqual() .whc_Width(20).whc_GreaterOrEqual()
Masonry/SnapKit update the constraint way unfriendly
objective[view mas_updateConstraints:^(MASConstraintMaker *make) { make.top.equalTo(superview.mas_top).with.offset(10); make.left.equalTo(superview.mas_left).with.offset(20); make.bottom.equalTo(superview.mas_bottom).with.offset(-10); make.right.equalTo(superview.mas_right).with.offset(-10); }];
Update the view constraints
Modify the view to the left from 20 other views
objectiveview.whc_LeftSpace(20); // or view.whc_LeftSpaceToView(20,otherView);
Can be directly modified constraints on the Xib and Storyboard
If the view of xib leading now amended as left constraints
objective/// First remove the xib view of leading and then add new constraints view.whc_RemoveLayoutAttrs(NSLayoutAttributeLeading) .whc_LeftSpace(10);
Remove the constraint
Remove all constraints associated with view left
objectiveview.whc_RemoveLayoutAttrs(NSLayoutAttributeLeft);
To remove multiple constraints associated with view
objectiveview.whc_RemoveLayoutAttrs(NSLayoutAttributeLeft,NSLayoutAttributeLeading,NSLayoutAttributeTop); // or view.whc_RemoveTo(linkView, attrs: NSLayoutAttributeLeft ...);
Modify the view constraint priority
Modify the view constraint for low priority right
objectiveview.whc_RightSpace(10) .whc_PriorityLow();
objective// The higher the priority, the less likely to be stretched // 设置抗拉伸优先级,优先级越高越不容易被拉伸 label.whc_ContentHuggingPriority(UILayoutPriorityDefaultLow, UILayoutConstraintAxisHorizontal); // 设置抗压缩优先级,优先级越高越不容易被压缩 // Compression priority, the higher the priority the less easy to be compressed label.whc_ContentCompressionResistancePriority(UILayoutPriorityDefaultLow, UILayoutConstraintAxisHorizontal);
One line of code calculation cell height
No reuse way calculated cell height
objective- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [UITableViewCell whc_CellHeightForIndexPath:indexPath tableView:tableView]; }
Reuse way calculated cell height
objective- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [UITableViewCell whc_CellHeightForIndexPath:indexPath tableView:tableView identifier:@"kFirendsCircleCellIdentifier" layoutBlock:^(UITableViewCell *cell) { /// use model layout cell [(FriendsCircleCell *)cell setFriendModel:_friendModelArray[indexPath.row]]; }]; }
Use WHC_StackView
Create WHC_StackView
objectiveWHC_StackView * stackView = [WHC_StackView new]; [self.view addSubview: stackView];
Add constraint
objectivestackView.whc_LeftSpace(10) .whc_TopSpace(10) .whc_RightSpace(10) .whc_HeightAuto();
Configuration stackView
1. Set the padding
objectivestackView.whc_Edge = UIEdgeInsetsMake(10, 10, 10, 10); // 内边距
2. Set the layout direction
objectivestackView.whc_Orientation = Vertical; // 自动垂直布局
3. Set the child views lateral clearance
objectivestackView.whc_HSpace = 10; // 子视图横向间隙
4. Set the child views vertical clearance
objectivestackView.whc_VSpace = 10; // 子视图垂直间隙
5. Add subview and start the layout
objectivefor (int i = 0; i < 4; i++) { UIView * view = [UIView new]; [stackView addSubview:view]; } [stackView whc_StartLayout];
Prompt
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
Part of the WHC_AutoLayoutKit demo show
<img src = "https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/c.png" width = "375"><img src = "https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/g.png" width = "375">




Licenses
All source code is licensed under the MIT License.
Contributors
Showing top 1 contributor by commit count.
