PureLayout

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

12345
@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;  // 判断是否存在约束条件

然后在加载试图

1234567891011
- (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]; //  设置新的约束天剑}

如果没有试图,那么就重新创建一个

123456789101112131415161718192021222324252627282930313233343536
- (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;}

然后再添加试图的约束条件

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
- (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#

时间: 01-13

PureLayout的相关文章

PureLayout和Masonry比较

一年前那时我做iOS开发,为了自动布局适配多种屏幕,我一般使用Masonry,后来偶然地在一个视频教程中发现老师使用了UIView+Autolayout(现在作者改名为PureLayout)自动布局,发现PureLayout的自动布局方式更符合OC开发者的习惯,使用起来更简单直观.此后我做项目或者带团队做项目一般都优先使用PureLayout.最新加入一个团队,他们依然在使用Masonry,不可否认,在苹果推出NSAutoLayoutContrant初期,Masonry给开发者带来了极大的便利,

PureLayout的使用

1.设置高度宽度 [view1 autoSetDimension:ALDimensionHeight toSize:70.0]; [view1 autoSetDimension:ALDimensionWidth toSize:70.0]; 2.相对于父视图 ALEdgeInsets defInsets = ALEdgeInsetsMake(20.0,20.0,20.0,20.0); [view1 autoPinEdgesToSuperviewEdgesWithInsets:defInsets];

PureLayout(轻量级自动布局)

直接整理用法 1.设置高度宽度 [view1 autoSetDimension:ALDimensionHeight toSize:70.0]; [view1 autoSetDimension:ALDimensionWidth toSize:70.0]; 2.相对于父视图 ALEdgeInsets defInsets = ALEdgeInsetsMake(20.0,20.0,20.0,20.0); [view1 autoPinEdgesToSuperviewEdgesWithInsets:defI

整理第三方类库

网络 AFNetworking:mattt大神的网络事件处理框架. XMPPFramework:XMPP,主要用于即时通讯. CocoaAsyncSocket:异步socket请求框架. Reachability:用来检查应用当前的网络连接状况,是苹果Reachability类的直接替代品,支持ARC,支持block,使用GCD方法来通知网络接口的变化. SocketRocket:WebSocket协议是一种网络协议,它的Web设计实现了浏览器与服务器的双向通讯.通过使用WebSockets,你

iOS 下的相册与图片处理

iOS 下的相册与图片处理 需求 很多公司项目中都会使用到相册,以及相机,保存图片,从相册中选取图片等等操作.本文将详细介绍该功能如何实现优化,以及使用一些优秀的第三方库来辅助完成我们的需求. photos framework 的使用 Photos Framework reference Classes PHAdjustmentData /* When a user edits an asset, Photos saves a PHAdjustmentData object along with

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.

收集Github上的iOS控件和开发资料

文章来源:http://www.mobile-open.com/2015/85017.html 动画 awesome-ios-animation 收集了iOS平台下比较主流炫酷的几款动画框架 RCTRefreshControl qq的下拉刷新 TBIconTransitionKit icon 的点击动画过渡效果 PullToBounce 类似百度外卖的下拉刷新动画 LiquidFloatingActionButton 可定制水滴型浮动动态按钮组件及演示 富文本 DDRichText 附带了微信朋

iOS超全开源框架、项目和学习资料汇总:UI篇

上下拉刷新控件 1. MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) 2. SVPullToRefresh --下拉刷新控件4500+star,值得信赖3. CBStoreHouseRefreshControl --一个效果很酷炫的下拉刷新控件3600+star4. BreakOutToRefresh --一个下拉刷新打砖块的开源 Swift 库,能让用户在等待下拉刷新的时候

iOS开发 非常全的三方库、插件、大牛博客等等

UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl- XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHo