http://blog.csdn.net/asdfg13697116596/article/details/42562565

iOS 8 AutoLayOut入门
自从iOS6带来Auto Layout这个特性以来,用户界面的布局便变得简单起来。iOS8更是做的更好
本文主要针对初学者分享一下自己最近学习AutoLayout的心得体会。Let’s Start!
首先,什么是AutoLayout?
简单来说,就是自动布局,当你旋转屏幕或者缩放你的UI来适应不同大小的屏幕等,程序的视图看起来依然很nice,你通过可以在IB中增加或者编辑约束(constraints)来实现。
启用AutoLayout,可以直接在Main.storyboard勾选AutoLayout
    

2.通过一个程序来认识Autolayout的一些操作和特性
首先在storyboard中拖入三个UIButton建立如下的方块,竖屏下显示

(注意:Xcode6中,如果直接拖入UIView不增加constraint,当你拖入下一个UIView会直接导致前一个的长宽都为零,所以当拖入一个UIview必须设置为reset to suggested constrains)

不做任何的改变,横屏下

但是实际上,你想得到的是下面的效果

3.怎么做呢
选中两个Button,按住⌘,然后在Editor 菜单中,选择Pin\Widths Equally

同样地,选择Editor\Pin\Horizontal Spacing.

Tips:当然你也可以通过选中一个Button然后按住control拖到另一个Button,在菜单中选择这些。

接下来,对于这三个View分别应用:
左侧:    Top Space to Superview
                Leading Space to Superview
右侧: Top Space to Superview
            Trailing Space to Superview
下部: Leading Space to Superview
            Trailing Space to Superview
             Bottom Space to Superview


此时,“T”型的constraint还是橘黄色的,表示欠约束。

当然,从左侧的Document Outline也可以看到有一个红色的箭头,表示欠约束。

接下来选中三个View,添加Heights Equally。

此时,运行,ok搞定!

4.下面介绍几个常见的问题:
有些时候,我们运行程序会得到提示Unable to simultaneously satisfy constraints,表示constraints冲突,也就是过约束。一般来说,一个试图四个约束就够了,多了肯定得移去,不贵再多,恰到好处方好。
intrinsic content size(固有尺寸):
当我们拖入一个Button的时候会发现,button的大小是确定的。为什么呢?这是因为它可以根据文字和背景自动计算它的大小,想要改变它的大小可以通过移除Width constraint,再设置自己偏好的大小。如果想取消,只需要选择Editor \Size to Fit Content.
Hugging priority (拥抱优先级)确定view有多大的优先级阻止自己变大。
其实content Hugging就是要维持当前view在它的intrinsic content size,可以想象成给view添加了一个额外的width constraint,此constraint试图保持view的size不让其变大。
Compression Resistance priority(压缩阻抗优先级)确定有多大的优先级阻止自己变小。
Content Compression Resistance就是要维持当前view在他的optimal size(intrinsic content size),可以想象成给view添加了一个额外的width constraint,此constraint试图保持view的size不让其变小。
这两个概念很抽象,自己在程序里设置一下,运行几次就清楚了!

此外还有其他的一些属性,需要自己去查看帮助文档了。好了啰嗦这么多,逻辑性也不强,很杂,欢迎大家批评指正。

iOS 8 AutoLayOut入门的更多相关文章

  1. ios中autolayout

    IOS 6 自动布局 入门-1  Matthijs Hollemans on September 29, 2012 Tweet 这篇文章还可以在这里找到 英语, 韩语, 土耳其语 If you're ...

  2. 【转】iOS 开发怎么入门?

    原文网址:http://www.zhihu.com/question/20264108 iOS 开发怎么入门? 请问有设计模式.内存管理方面的资料吗?最好有除了官方文档之外的其它内容,10 条评论 分 ...

  3. 李洪强iOS开发之-入门指南

    李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...

  4. IOS 客户端测试入门.pdf

    IOS 客户端测试入门  http://www.open-open.com/doc/view/42d1257bf67946f595e843bfdbdfeabf

  5. iOS 8 AutoLayout与Size Class自悟(转载)

    iOS 8 AutoLayout与Size Class自悟 Size classiOS 8 AutoLayout 前言 iOS8 和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhon ...

  6. iOS 6 Passbook 入门 1/2

    http://www.raywenderlich.com/zh-hans/23066/ios-6-passbook-%E5%85%A5%E9%97%A8-12 iOS 6 Passbook 入门 1/ ...

  7. iOS 开发如何入门

    iOS 开发如何入门 新人如何入门 上一篇文章的回复中,很多读者让我推荐入门图书.其实我觉得每个人可能有自己喜欢的学习方式,我习惯的不一定适合你.不过我可以分享一下我当时是如何学习 iOS 开发的. ...

  8. 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市

             承蒙广大读者的厚爱我的 <iOS实战:入门与提高卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11766718.html ...

  9. ios 7 Autolayout bug

    ios 7 Autolayout bug 错误类型:NSInternalInconsistencyException(SIGABRT) 详情:Auto Layout still required af ...

随机推荐

  1. Create Script Template In Edit Mode

    很多时候 许多类 的 格式 都是重复的,比如 从配置文件中映射出来的类. 这个时候写一个 类模板 就很节省时间了. Code public static string TestPath = " ...

  2. 线上问题 - MySQL SQL state [HY000]; error code [1366]

    一.问题描述 另外一个系统调用服务接口api:/xxx/create?aName=&time=&...,数据没有保存成功提示SQL state [HY000]; error code ...

  3. POJ 1759

    Garland Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1236   Accepted: 547 Descriptio ...

  4. 替代jquery

    如果不需要过多操作,不引用jquery 1.document.ready :$(function(){}) http://www.cnblogs.com/a546558309/p/3478344.ht ...

  5. POJ 1573

    #include<iostream> #include<stdio.h> #define MAXN 15 using namespace std; char _m[MAXN][ ...

  6. POJ 1607

    #include<iostream> #include<iomanip> using namespace std; int main() { //freopen("a ...

  7. socket异步编程--libevent的使用

    使用 libevent 和 libev 提高网络应用性能 http://www.ibm.com/developerworks/cn/aix/library/au-libev/ libevent实现ht ...

  8. CentOS系统配置solr

    1.新建一个文件夹 比如soft   cd /soft   wget http://apache.fayea.com/lucene/solr/6.0.0/solr-6.0.0-src.tgz  --下 ...

  9. MySql存储引擎特性对比

    下表显示了各种存储引擎的特性: 其中最常见的两种存储引擎是MyISAM和InnoDB 刚接触MySQL的时候可能会有些惊讶,竟然有不支持事务的存储引擎,学过关系型数据库理论的人都知道,事务是关系型数据 ...

  10. iphone 6 设置自定义铃声(未越狱)

    环境: ipone 6 iTunes 12.4.0.119 IOS 9.3.2 先把需要设置的铃声下载到电脑上,然后打开iTunes下的文件->将文件添加到资料库,如图: 2.在音乐列表里右击所 ...