屏幕适配、Autoresizing、Autolayout、
标签(空格分隔): ios基础
屏幕适配
iPhone4之前
- 没有适配,不用适配
- 经常会出现坐标值写死的代码
//#define ScreenW 320
//#define ScreenH 480
#define ScreenW [UIScreen mainScreen].bounds.size.width
#define ScreenH [UIScreen mainScreen].bounds.size.height
// 创建一个显示在屏幕右下角的按钮
CGFloat buttonW = 100;
CGFloat buttonH = 50;
button.frame = CGRectMake(ScreenW - buttonW, ScreenH - buttonH, buttonW, buttonH);
iPad出现以后
- 需要横竖屏适配
- 出现了一种方便的屏幕适配技术:Autoresizing
- 局限性:仅仅能解决子控件和父控件之间的相对关系问题
iOS6开始(Xcode4开始)
- 出现了一种新的屏幕适配技术:Autolayout
- 解决任何控件之间的相对关系问题
iOS8开始(Xcode6开始)
- 出现了一种新的屏幕适配技术:Sizeclass
Autoresizing
注意点:
- UIViewAutoresizingFlexibleLeft
Margin = 1 << 0,
- 距离父控件左边
的间距是伸缩的
- UIViewAutoresizingFlexibleRight
Margin = 1 << 2,
- 距离父控件右边
的间距是伸缩的
- UIViewAutoresizingFlexibleTop
Margin = 1 << 3,
- 距离父控件上边
的间距是伸缩的
- UIViewAutoresizingFlexibleBottom
Margin = 1 << 5
- 距离父控件下边
的间距是伸缩的
- UIViewAutoresizingFlexibleWidth
= 1 << 1,
- 宽度
跟随父控件宽度
进行伸缩
- UIViewAutoresizingFlexibleHeight
= 1 << 4,
- 高度
跟随父控件高度
进行伸缩
Autolayout
2个核心概念
约束
- 尺寸约束
- width约束
- height约束
- 位置约束
- 间距约束(上下左右间距)
- 尺寸约束
参照
- 所添加的约束跟哪个控件有关(相对于哪个控件来说)
常见单词
- Leading -> Left -> 左边
- Trailing -> Right -> 右边
UILabel实现包裹内容
- 设置宽度约束为 <= 固定值
- 设置位置约束
- 不用去设置高度约束