1 YJAutoLayout

YJAutoLayout主要实现NSLayoutConstraint的相关扩展和封装,它能使我们关于屏幕布局的开发越来越简单。

1.1 YJAutoLayout的优点

  1. 支持iOS6.0和Swift开发。
  2. IOS和Swift的编程代码一模一样
  3. 代码写法模仿Apple关于约束的原生伪代码,增加代码可阅读性。
  4. 将IOS9推出的NSLayoutAnchor迁移到IOS6上使用。

1.2 YJAutoLayout的缺点。

  1. 需要学习原生AutoLayout的使用。Auto Layout Guide

1.3 YJAutoLayout/Extend

YJAutoLayout/Extend是YJAutoLayout的衍生库,它主要是封装了NSLayoutConstraint的一些公用开发。如果项目中使用NSLayoutConstraint做开发,可以使用到它。不过推荐使用YJAutoLayout做AutoLayout开发。

1.4 导入YJAutoLayout

导入YJAutoLayout可使用pod导入,相关命令:

platform :ios, '6.0'
pod 'YJAutoLayout'

platform :ios, '6.0'
pod 'YJAutoLayout', :git => 'https://github.com/937447974/YJAutoLayout.git'

pod导入后即可在项目中看见相关文件。

2 使用介绍

NSLayoutConstraint原始代码

[NSLayoutConstraint constraintWithItem:view1 attribute:attr1 relatedBy:NSLayoutRelationEqual toItem:view2 attribute:attr2 multiplier:m constant:c];

转化为伪代码

view1.attr1 = view2.attr2 * m + c

如attr1 = NSLayoutAttributeLeading,attr2 = NSLayoutAttributeTrailing

则使用YJAutoLayout可转换为

view1.leadingLayout.equalTo(view2.trailingLayout).multipliers(m).constants(c)

当m=1时,可不写.multipliers(m);

当c=0时,可不写.constants(c)

2 实战演示

2.1 基础实战

接下来完成一个如下所示的约束图。

根据演示图,列出相关伪代码

Yellow View.Leading = Superview.LeadingMargin +20.0
Yellow View.Top = Top Layout Guide.Bottom + 20.0
Bottom Layout Guide.Top = Yellow View.Bottom + 20.0Green View.Trailing = Superview.TrailingMargin
Green View.Top = Top Layout Guide.Bottom + 20.0
Bottom Layout Guide.Top = Green View.Bottom + 20.0Green View.Leading = Yellow View.Trailing + 30.0
Yellow View.Width = Green View.Width

使用YJAutoLayout表示

// 1 yellow约束
yellowView.leadingLayout.equalTo(self.view.leadingLayout).constants(20);
yellowView.topLayout.equalTo(self.topLayoutSupport.bottomLayout).constants(20);
self.bottomLayoutSupport.topLayout.equalTo(yellowView.bottomLayout).constants(20);
// 2 green约束
greenView.topLayout.equalTo(self.topLayoutSupport.bottomLayout).constants(20);
self.view.trailingLayout.equalTo(greenView.trailingLayout).constants(20);
self.bottomLayoutSupport.topLayout.equalTo(greenView.bottomLayout).constants(20);
// 3 green和yellow的共有约束
greenView.leadingLayout.equalTo(yellowView.trailingLayout).constants(30);
greenView.widthLayout.equalTo(yellowView.widthLayout);

2.2 高级实战

你还可以多个约束同时设置。

上面的效果图即可改为

// 1 yellow约束
_yellowView.topSpaceToSuper(20).bottomSpaceToSuper(20).leadingSpaceToSuper(20);
// 2 green约束
_greenView.topSpaceToSuper(20).bottomSpaceToSuper(20).trailingSpaceToSuper(20);
// 3 green和yellow的共有约束
_greenView.leadingLayout.equalTo(_yellowView.trailingLayout).constants(30);
_greenView.widthLayout.equalTo(_yellowView.widthLayout);

如果是等bounds还可以使用如下写法。

self.yellowView.topSpaceToSuper(0).leadingSpaceToSuper(0).bottomSpaceToSuper(0).trailingSpaceToSuper(0);
// 等价
self.yellowView.sizeLayoutTo(self.view);
self.yellowView.centerLayoutTo(self.view);
// 等价
self.yellowView.boundsLayoutTo(self.view);  

Appendix

Author

姓名:阳君

QQ:937447974

YJ技术支持群:557445088

职位:聚美优品iOS攻城师

如果你觉得这个框架很赞,请点击右上角的Star按钮;如果你对我的框架感兴趣,并想持续获得本人最新的框架源文件,欢迎点击右上角的Fork按钮。

如果你也想来和我们一起在聚美优品(北京)从事iOS研发工作,欢迎投递简历到937447974@qq.com。

Revision History

时间 描述
2016-04-22 项目启动
2016-04-22 1.0 YJAutoLayout库和YJAutoLayout/Extend库完成
2016-04-25 1.0.1 YJAutoLayout使用文档完成
2016-04-26 1.1.0 UIView+YJViewLayoutConstraintCreation增加多个约束方法

Copyright

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974/Blog

YJAutoLayout相关推荐

最新文章

  1. BufferedWriter
  2. Android系统中Parcelable和Serializable的区别
  3. SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enable
  4. linux系统的运行级别
  5. 自学Android!Android高级工程师面试题-字节跳动,附答案
  6. 百练 05 切割回文
  7. 我将要关注的kaggle比赛
  8. ORM框架之Mybatis(六)mybatis通用mapper
  9. 1067. Sort with Swap(0,*) (25)
  10. PN结是什么?PN结有什么特征?PN结的应用
  11. RS422--ARINC429通讯转换模块 RS422支持全双工通讯接口,通讯速率可设置,ARINC429支持发送和接收
  12. iPad2 3G版 5.1.1降级到4.3.3(需要4.3.3SHSH备份)
  13. SQL连接查询总结和练习
  14. 有量子计算机的山西高能小说,高能小说推荐-好看的高能类小说-高能小说排行榜-七零文学...
  15. Locks Aren't Slow; Lock Contention Is
  16. 如何获取篮球比赛即时赔率
  17. Mac安装MongoDB(极简)
  18. 病毒泄密一个接一个,有7招能保护你的数字生活
  19. Collider组件与Rigidbody组件杂谈
  20. 关于idea找不到外部资源库External Libraries的解决办法

热门文章

  1. 医院计算机网络安全应急预案,医院计算机网络信息管理系统故障应急预案(技术保障实施细则).doc...
  2. 吴恩达ML WEEK7 机器学习
  3. Python:使用f-string保留小数点位数
  4. 50_00_000java,时间格式转换2020-04-09T23:00:00.000+08:00
  5. POE直流供电后段整流电路(含网络变压器供电)示意图
  6. mysql定时任务每天凌晨三点钟醒来_常常凌晨三四点醒来是怎么回事?遇到这事要警惕了...
  7. 开篇-漫漫人生路-程序员
  8. 个人英雄主义和个人品牌
  9. 怪物猎人ns联机显示与服务器连接发生错误,怪物猎人世界网络连不上怎么办?联机失败问题解决方法...
  10. Digital Pixel 杂志 Joomla模板 joomla摄影艺术数码作品博客商业