iPhone 3GS、iPhone 4
iPad 、 iPhone 横屏出现
- 出现Autoresizing 技术
- 让横竖屏适配相对简单
- 让子控件可以跟随父控件的行为自动发生相应变化
- 前提是: 关闭AutoLayout 功能
- 局限性
- 只能解决子控件跟父控件的相对关系问题
- 不能解决兄弟控件的相对关系问题
UIView *blueView = [[UIView alloc]init];
blueView.backgroundColor = [UIColor blueColor];
CGFloat wh = 100;
blueView.frame = CGRectMake(0, 0, self.view.bounds.size.width, wh);
blueView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:blueView];//
/** 注意:前4个和后两个的字面意思
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,距离左边距离不固定(左边不固定右边就是固定的)
UIViewAutoresizingFlexibleRightMargin = 1 << 2,距离右边距离不固定
UIViewAutoresizingFlexibleTopMargin = 1 << 3,距离顶部距离不固定
UIViewAutoresizingFlexibleBottomMargin = 1 << 5距离底部距离不固定
UIViewAutoresizingFlexibleHeight = 1 << 4,高度跟随父控件的高度进行自动伸缩
UIViewAutoresizingFlexibleWidth = 1 << 1,宽度跟随父控件的宽度进行自动伸缩
*/
上述代码注意点:
iOS 6 —— autolayout(自动布局)
- 随着 iPhone5 \ iPhone5s 等的发布苹果设备不同尺寸的屏幕变得越来越多, 不仅要求能根据控件父子关系来设置相对位置,也要求能根据任意控件之间的关系来设置位置
- 因为 autoresizing 只能设置当前控件与父控件之间的相对关系,当遇到要设置兄弟控件之间的关系的时候 autoresizing 就无能为力了
- autolayout 技术主要解决的问题:控件位置的参照关系不再局限于父控件
iOS 8 —— size classes + autolayout
- 使用 size classes + autolayout 进行屏幕适配
- 当 iPhone6 发布以后,苹果设备的屏幕越来越多(以后也可能出现更多不同大小的屏幕),为了能更容易的适配不同的屏幕,苹果推出了 size classes 技术
- 通过 autolayout 设置的约束,约束一旦添加就会应用于各种屏幕(也就是说在各种不同的屏幕下都使用相同的约束)
- 通过 size classes + autolayout 的方式, 可以为不同尺寸的屏幕设置不同的约束举例: iPhone 下的计算器,在横屏、竖屏下的不同表现
- size classes 技术主要解决的问题: 为不同尺寸的屏幕, 通过 autolayout 设置不同的约束
iOS 9 —— size classes + autolayout + StackView
- Stack View 的核心便是方便垂直或水平排布多个 subview
- 类似于 android 的 LinearLayout
- Stack View 最有用的就是它会自动为每个 subview 创建和添加 Auto Layout 约束,程序员可以
通过选项配置subview的大小、排布以及彼此间的间距使用 stackview 主要简化在线性方向上,重复设置控件布局约束的问题
如果您有什么疑问或者书写歧义,非常感激您能留言~
网友评论