iOS 应用,通常是以界面(UI: User Interface)展示给用户。 没有界面的应用,对用户来说,将无所适从,总不至于罗列出一堆说明书吧。 iOS开发,很大一部分工作量都花在界面布局上,有时候为了让一个控件完美的显示就得调试不少时间。初学者对这个UI布局的操作,还有些新鲜感,但随着对iOS的深入理解,越是有经验的iOS开发者,对UI布局所花费的时间,无不深恶痛绝,在UI上无休止的改动,就是无休止的浪费时间。
我们在一般在使用storyBoard布局的时候使用autolayout,autolayout(以及iOS8中新增的sizeclass)是为了解决这些UI可视单元或者元素是怎样布局、排列的问题。 iOS6 之前的 layout: UI上元素(也可以理解为控件),以视图的左上角为参考坐标(0,0)进行布局。当屏幕大小发生变化时,你得手工编写大量的代码来做屏幕的适配,iOS6 推出auto layout功能,大大简化了UI设配的工作量。 当手机屏幕的frame 发生变化时,比如横屏竖屏,UI上控件(比如:button,imageView啦)的位置和大小会自动适配新的frame,无需人工调整,这就是 autolayout的强大之处。
Autolayout最基本的工具是约束(constraints),一个constraint描述了两个视图间的几何关系。比如,有这样一个约束:"label A左边缘和imageView B右边缘有10点的空白空间”。给UI元素设置constraints的时候,有的变橙色了,说明当前所做的约束还不能够确定这个UI元素的位置,需要继续添加约束,直到现在它的constraints都是蓝色的,红色的很明显就是添加的constraints是错误的了。
Xcode中的规则是:Xcode只为那些你没有设置任何约束的对象创建自动约束。一旦你增加一个约束,你便是告诉Xcode你接管了这个视图。Xcode将不再增加任何自动约束,并希望你为这个视图增加需要的约束。

参考资料
https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage/VisualFormatLanguage.html#//apple_ref/doc/uid/TP40010853-CH3
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSLayoutConstraint_Class/NSLayoutConstraint/NSLayoutConstraint.html

最新文章

  1. TortoiseSvn的安装过程详解
  2. checkbox和文字对齐
  3. 基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习
  4. php配置参数.md
  5. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
  6. projecteuler Smallest multiple
  7. Oracle EBS-SQL (SYS-4):sys_职责查询.sql
  8. .NET及.NET Core系统架构
  9. 关于使用Xcode自带的单元测试UnitTest的介绍
  10. Android百分比布局支持库(android-percent-support)
  11. sqlserver聚合索引(clustered index) / 非聚合索引(nonclustered index)的理解
  12. java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock
  13. ebe
  14. 国网SGCC_UAP 反编译.class文件源代码
  15. springboot集成logback日志
  16. 【文章存档】如何通过 GitLab 进行持续部署
  17. 关于MYSQL group by 分组按时间取最大值的实现方法
  18. Linux下安装python虚拟环境(virtualenv,vritulaenvwrapper)
  19. Mybatis的核心配置
  20. http协议中content-length 以及chunked编码分析

热门文章

  1. 8.实现(Realization)
  2. xshell linux传文件
  3. cocos2d-x 判断两条直线是否相交
  4. Codeforces Round #311 (Div. 2) A. Ilya and Diplomas 水题
  5. cookie标准话
  6. 关于JS的一点summary
  7. 【JavaScript】XMLHttpRequest Level2使用指南
  8. [MEAN Stack] First API -- 3. Select by ID with Mongoose and Express
  9. CSDN蒋涛:我为什么和王峰一起创办极客帮天使基金?
  10. C#“同步调用”、“异步调用”、“异步回调”