PureLayout 是 iOS & OS X Auto Layout 的终极 API——非常简单,又非常强大。PureLayout 通过一个全面的Auto Layout API 扩展了 UIView/NSView, NSArray 和 NSLayoutConstraint,仿照苹果自身的框架, 构建了一个全面的自动布局 API, 这样你再也不用为适配而苦恼啦!!!
添加PureLayout到你的工程里面
- 用CocoaPods安装(
podilfe中加pod 'PureLayout')/GitHub下载PureLayout, 手动添加到你的项目中
- 导入头文件
#import <PureLayout/PureLayout.h> / #import "PureLayout.h"
我们就这个布局来简单说一下

首先新建几个 View
1 2 3 4 5
|
@property (nonatomic, strong) UIView *blueView; @property (nonatomic, strong) UIView *redView; @property (nonatomic, strong) UIView *yellowView; @property (nonatomic, strong) UIView *greenView; @property (nonatomic, assign) BOOL didSetupConstraints; // 判断是否存在约束条件
|
然后在加载试图
1 2 3 4 5 6 7 8 9 10 11
|
- (void)loadView { self.view = [UIView new]; self.view.backgroundColor = [UIColor colorWithWhite:0.1 alpha:1.0];
[self.view addSubview:self.blueView]; [self.view addSubview:self.redView]; [self.view addSubview:self.yellowView]; [self.view addSubview:self.greenView]; [self.view setNeedsUpdateConstraints]; // 设置新的约束天剑 }
|
如果没有试图,那么就重新创建一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
- (UIView *)blueView { if (!_blueView) { _blueView = [UIView newAutoLayoutView]; _blueView.backgroundColor = [UIColor blueColor]; } return _blueView; }
- (UIView *)redView { if (!_redView) { _redView = [UIView newAutoLayoutView]; _redView.backgroundColor = [UIColor redColor]; } return _redView; }
- (UIView *)yellowView { if (!_yellowView) { _yellowView = [UIView newAutoLayoutView]; _yellowView.backgroundColor = [UIColor yellowColor]; } return _yellowView; }
- (UIView *)greenView { if (!_greenView) { _greenView = [UIView newAutoLayoutView]; _greenView.backgroundColor = [UIColor greenColor]; } return _greenView; }
|
然后再添加试图的约束条件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
- (void)updateViewConstraints //更新约束条件 { // 如果没有自动约束条件 if (!self.didSetupConstraints) { // Blue view is centered on screen,(Centers the view in its superview.) with size {50 pt, 50 pt}
//设置蓝色的 view 在父试图的中心, [self.blueView autoCenterInSuperview]; //设置蓝色的 view 的宽和高(50.0 50.0) [self.blueView autoSetDimensionsToSize:CGSizeMake(50.0, 50.0)];
// Red view is positioned at the bottom right corner of the blue view, with the same width, and a height of 40 pt // 设置红色 view 的顶部是蓝色 view 的底部 [self.redView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.blueView]; //设置红色 view 的左边是蓝色 view 的右边 [self.redView autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:self.blueView]; //设置红色 view 的宽度就是蓝色 view 的宽度 [self.redView autoMatchDimension:ALDimensionWidth toDimension:ALDimensionWidth ofView:self.blueView]; //设置红色 view 的高度为40.0 [self.redView autoSetDimension:ALDimensionHeight toSize:40.0];
// Yellow view is positioned 10 pt below the red view, extending across the screen with 20 pt insets from the edges, // and with a fixed height of 25 pt //设置黄色 veiw 的顶部距离红色 view 距离为10.0 [self.yellowView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.redView withOffset:10.0]; //设置黄色 view 的高度为25.0 [self.yellowView autoSetDimension:ALDimensionHeight toSize:25.0]; //设置黄色 view 距离父试图左边的距离为20.0 [self.yellowView autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:20.0]; //设置黄色 view 距离父试图右边的距离为20.0 [self.yellowView autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:20.0];
// Green view is positioned 10 pt below the yellow view, aligned to the vertical axis of its superview, // with its height twice the height of the yellow view and its width fixed to 150 pt //设置绿色 view 的顶部距离黄色 view 的底部距离为10.0 [self.greenView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.yellowView withOffset:10.0]; //设置绿色 view 相对父试图竖向居中 [self.greenView autoAlignAxisToSuperviewAxis:ALAxisVertical]; //设置绿色的 view 的高度是黄色 view 高度的2.0倍 [self.greenView autoMatchDimension:ALDimensionHeight toDimension:ALDimensionHeight ofView:self.yellowView withMultiplier:2.0]; //设置绿色 view 的宽度为150.0 [self.greenView autoSetDimension:ALDimensionWidth toSize:150.0];
//设置已经添加过约束了 self.didSetupConstraints = YES; }
[super updateViewConstraints]; }
|
github 地址:https://github.com/smileyborg/PureLayout#
- PureLayout和Masonry比较
一年前那时我做iOS开发,为了自动布局适配多种屏幕,我一般使用Masonry,后来偶然地在一个视频教程中发现老师使用了UIView+Autolayout(现在作者改名为PureLayout)自动布局, ...
- iOS PureLayout使用
PureLayout是iOS Auto Layout的终端API,强大而简单.由UIView.NSArray和NSLayoutConstraint类别组成.PureLayout为大多数Auto Lay ...
- PureLayout,使用纯代码写AutoLayout
为iOS和OS X的自动布局最终的API -- 令人印象深刻的简单,非常强大. PureLayout延伸的UIView /NSView , NSArray,和NSLayoutConstraint与之后 ...
- PureLayout(轻量级自动布局)
直接整理用法 1.设置高度宽度 [view1 autoSetDimension:ALDimensionHeight toSize:70.0]; [view1 autoSetDimension:ALDi ...
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- GitHub iOS-Top 100 简介
GitHub排名前100的iOS第三方汇总简介,方便开发者选择适合的第三方框架. 项目名称 项目信息 1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, ...
- iOS 开源项目
在 Github 上 Star 太多了,有时候很难找到自己想要的开源库,所以在此记录下来.便于自己开发使用,也顺便分享给大家. 动画 awesome-ios-animation收集了iOS平台下比较主 ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
随机推荐
- Xcode使用小结2
刷新时间慢的时候用timer定时器 以下内容为借用,作者:FlyElephant出处:http://www.cnblogs.com/xiaofeixiang iOS开发-NSOperation与GCD ...
- 等比缩放之自适应神器——css3的rem
1.rem简介 rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位.不同的是em是相对于元素的父元素的font-size进行计算:rem是相对于根元素html的font-si ...
- cocos2d-html5 之重要概念
1,CCDirector:导演: 2,CCCamera: 摄像机:细到每个节点都要用摄像机,例如节点发生放大,缩小,旋转的时候,要继承摄像机,让其重新渲染: 3,CCScene:场景,拍电影时的一段剪 ...
- c++中宽字节表示
1.C++语言中_T Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候 ...
- nginx 搭建 文件下载服务
location / { root /home/data-nginx/; index index.html index.htm; autoindex on; ##显示索引 autoindex_exac ...
- jsp中获取json字符串,并解析
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- C语言学习 数独游戏
摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...
- android studio genymotion插件
下载andriod studio 2.2 正式版,我的版本带SDK,一直安装, 1.在设置SDK的位置. 2.安装好后在安装虚拟机插件,genymotion去官网下载不带虚拟机的. 下载地址https ...
- 《JavaScript高级程序设计》读书笔记 ---Date 类型
ECMAScript 中的Date 类型是在早期Java 中的java.util.Date 类基础上构建的.为此,Date类型使用自UTC(Coordinated Universal Time,国际协 ...
- PostgreSQL 类型转换 -除法
PostgreSQL 类型转换 类似Oracle ,PostgreSQL也有强大的类型转换函数, 下面仅举两个类型转换例子. --1 例子 postgres=# select 1/4; ?colum ...