自动布局:AutoResizing

一、自动布局推出时间

1,2007.1.9 iPhone ~ 2011.10.4 iPhone 4s时期,只有一种屏幕不需要自动布局技术。

2,2010.1.27 iPad ,iPad出现以后需要进行横竖屏切换,这时候出现AutoResizing。

3,2012.9 iPhone 5。iOS6发布同时发布iPhone5,推出 AutoLayout 技术。

4,2014.9.10 iPhone 6。iOS8发布同时发布iPhone6,推出了 AutoLayout + SizeClasses 技术。

5,2015.9.10 iOS9。iOS9在 AutoLayout + SizeClasses 基础上,又添加了新的一个UI控件 — UIStackView。

/*
 1. 为什么要使用自动布局技术:
    - 不适用自动布局技术,我们搭建的UI界面只能在一种尺寸的屏幕下‘完美’运行,换一个尺寸的屏幕就‘不完美’了
 
 2. 有哪些自动布局的技术?
    - AutoResizing 、 AutoLayout
 
 3. 自动布局技术的发展史:
 
    - 早期iPhone3GS \ iPhone4 \ iPhone4S 屏幕的物理尺寸是一样的(3.5inch),应用程序没有横竖屏切换的要求,所以无需屏幕适配。只需要设置 Frame 就可以了。
 
    - 后来出了iPad,苹果要求在 iPad 上运行的程序如果没有特殊原因,应该支持横竖屏切换。Frame + AutoResizing 技术应运而生。
        AutoResizing 技术的核心就是:参考父试图进行布局的约束设置
 
    - iOS6发布同时发布iPhone5,不同屏幕尺寸就出现了(4.0inch),所以苹果就适时推出 AutoLayout 技术。
        AutoLayout 技术的核心就是:不仅能够参考父试图还可以参考任意视图进行布局约束设置。和 AutoResizing 比起来,AutoLayout 功能更加强大,不像 AutoResizing 那样只能约束和父试图之间的位置关系
        但是!由于 4.0 和 3.5 两种屏幕尺寸虽然发生变化,可屏幕的宽度并没有发生变化,所以当时应用并不广泛。
 
    - iOS8发布同时发布iPhone6,这一次屏幕尺寸的宽和高都发生了变化,所以就需要一种功能强大的自动布局技术,苹果适时推出了 AutoLayout + SizeClasses 技术,自此 AutoLayout 技术的使用大范围铺开
 
    - iOS9在 AutoLayout + SizeClasses 基础上,又添加了新的一个UI控件 -- UIStackView。这个控件是帮助我们进行自动布局的控件
 
 重点学习 AutoLayout 技术,学不好 AutoLayout ,学SizeClass 和 UIStackView 是徒劳的
 
 AutoResizing 现在已经应用不多了,它可以完全被AutoLayout所取代。
 
 
 
 */



二、什么时候使用自动布局?

1. 支持不同尺寸的屏幕;

2. 支持横竖屏切换的时候;

3. iPad 在分屏的时候;

4. iMac 程序在调整窗口大小的时候。


三、在IB(Interface Builder)中使用AutoResizing

1. 禁用AutoLayout:只有禁用AutoLayout,AutoResizing的配置面板才能出现,所以在一个IB中只能使用一种自动布局技术。

特点1:AutoResizing只能定义视图和父试图之间的位置关系。

特点2:外面四根线,勾选:边距不可变;不勾选:边距可变。

特点3:里面两根线,勾选:宽、高可变;不勾选:宽、高不可变。


四、代码中使用AutoResizing

使用autoresizingMask属性来设置四周边距和宽高是否可变。例如:

    // 设置AutoResizing
    redView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;

寻找 可变的属性,通过位枚举做位运算。

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0, //左边距可变
    UIViewAutoresizingFlexibleWidth        = 1 << 1, //宽可变
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2, //右边距可变
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3, //上边距可变
    UIViewAutoresizingFlexibleHeight       = 1 << 4, //高可变
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5  //下边距可变
};









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值