Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/netyouli/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平台上使用简单动态布局约束处理能力
https://github.com/netyouli/WHC_AutoLayoutKit
autocellheight autolayout masnory uistackview whc
Last synced: 3 months ago
JSON representation
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平台上使用简单动态布局约束处理能力
- Host: GitHub
- URL: https://github.com/netyouli/WHC_AutoLayoutKit
- Owner: netyouli
- License: mit
- Created: 2016-02-29T07:44:09.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-04-13T13:58:00.000Z (over 3 years ago)
- Last Synced: 2024-07-18T15:29:21.096Z (4 months ago)
- Topics: autocellheight, autolayout, masnory, uistackview, whc
- Language: Objective-C
- Homepage: http://www.wuhaichao.com
- Size: 13.9 MB
- Stars: 864
- Watchers: 45
- Forks: 151
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-iOS - WHC_AutoLayoutKit - iOS/Mac OS X平台上目前使用最简单开发构建UI速度最快的自动布局开源库,强悍的动态布局约束处理能力 (UI Frameworks)
README
# WHC_AutoLayout
![Build Status](https://api.travis-ci.org/netyouli/WHC_AutoLayoutKit.svg?branch=master)
[![Platform](https://img.shields.io/cocoapods/p/WHC_AutoLayoutKit.svg?style=flat)](https://github.com/netyouli/WHC_AutoLayoutKit)
[![Pod Version](http://img.shields.io/cocoapods/v/WHC_AutoLayoutKit.svg?style=flat)](http://cocoadocs.org/docsets/WHC_AutoLayoutKit/)
[![Pod License](http://img.shields.io/cocoapods/l/WHC_AutoLayoutKit.svg?style=flat)](https://opensource.org/licenses/MIT)- 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](https://github.com/netyouli/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 constraintsRequire
==============
* iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+
* Xcode 8.0 or laterNote
==============
- When the view call **removeFromSuperview** the view must call **whc_ResetConstraints** to clear the cache constraintInstall
==============
* CocoaPods: pod 'WHC_AutoLayoutKit'Usage
==============## UILayoutGuide,safeAreaLayoutGuide
```objective-c
UILayoutGuide * 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
![](https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/autoHeight.gif)```objective-c
view.whc_LeftSpace(10)
.whc_TopSpace(10)
.whc_RightSpace(10)
.whc_HeightAuto();
```## Use lessEqual or greaterEqual (width <= 100 && width >= 20)
```objective-c
view.whc_Width(100).whc_LessOrEqual()
.whc_Width(20).whc_GreaterOrEqual()
```## Masonry/SnapKit update the constraint way unfriendly
```objective-c
[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
```objective-c
view.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-c
/// 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
```objective-c
view.whc_RemoveLayoutAttrs(NSLayoutAttributeLeft);
```
To remove multiple constraints associated with view
```objective-c
view.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
```objective-c
view.whc_RightSpace(10)
.whc_PriorityLow();
``````objective-c
// 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-c
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [UITableViewCell whc_CellHeightForIndexPath:indexPath tableView:tableView];
}
```Reuse way calculated cell height
```objective-c
- (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_StackViewCreate WHC_StackView
```objective-c
WHC_StackView * stackView = [WHC_StackView new];
[self.view addSubview: stackView];
```Add constraint
```objective-c
stackView.whc_LeftSpace(10)
.whc_TopSpace(10)
.whc_RightSpace(10)
.whc_HeightAuto();
```Configuration stackView
**1.** Set the padding
```objective-c
stackView.whc_Edge = UIEdgeInsetsMake(10, 10, 10, 10); // 内边距
```
**2.** Set the layout direction
```objective-c
stackView.whc_Orientation = Vertical; // 自动垂直布局
```
**3.** Set the child views lateral clearance
```objective-c
stackView.whc_HSpace = 10; // 子视图横向间隙
```
**4.** Set the child views vertical clearance
```objective-c
stackView.whc_VSpace = 10; // 子视图垂直间隙
```
**5.** Add subview and start the layout
```objective-c
for (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
==============
![](https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/f.gif)![](https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/a.gif)![](https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/swiftb.gif)![image](https://github.com/netyouli/WHC_AutoLayoutKit/blob/master/Gif/d.png)Licenses
==============
All source code is licensed under the MIT License.