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. org.eclipse.wst.common.project.facet.core.xml文件模板,解决eclipse编译报错。

    <?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed f ...

  2. POJ1474 Video Surveillance(半平面交)

    求多边形核的存在性,过了这题但是过不了另一题的,不知道是模板的问题还是什么,但是这个模板还是可以过绝大部分的题的... #pragma warning(disable:4996) #include & ...

  3. cf 403 D

    D. Beautiful Pairs of Numbers time limit per test 3 seconds memory limit per test 256 megabytes inpu ...

  4. UITextField输入中文限制

      [self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEve ...

  5. POJ 2027

    #include<iostream> using namespace std; int main() { int time; cin>>time; int a; int b; ...

  6. 怎样强制QQ聊天

    首先复制下面这段网址: http://wp.qq.com/open_webaio.html?sigt=2d3bb7d31517da8c94a1061c6b63dd3203eb633805dcd09ec ...

  7. poj 3635(bfs+优先队列)

    题目链接:http://poj.org/problem?id=3635 思路:本题主要运用的还是贪心思想,由于要求st->ed的最小花费,那么每经过一个城市,能不加油就尽量不加油,用dp[i][ ...

  8. x86虚拟地址到物理地址的映射学习

    这里只谈分页管理的机制,也是目前最重要的内存管理机制. 最初的设计想法: 结构图如下: 页的尺寸是4KB,虚拟地址的前20位用于指定一个物理页,后12位用于访问页内偏移. 页表项的结构: 各个位的含义 ...

  9. http://www.cnblogs.com/draem0507/archive/2013/02/01/2889317.html

    http://www.cnblogs.com/draem0507/archive/2013/02/01/2889317.html

  10. TableViewCell自定义分割线

    产品设计的要求cell的分割线长度不用是整个屏幕宽,并且设计要求分割线为2px(两条),上下不同色. 实现如下: UITableView中将分割线样式改为None tableView.separato ...