屏幕适配
2016-08-23 本文已影响0人
彼岸的黑色曼陀罗
基本概念
-
适配
-
概念:适合兼容各种不同的情况
- 系统适配:针对不同系统版本进行适配
- 屏幕适配:针对不同大小的屏幕尺寸进行适配
-
点和像素
- 屏幕是由无数个点组成的,点是由像素组成的
-retina屏幕:一个点由四个像素组成,可以显示四种颜色
- 屏幕是由无数个点组成的,点是由像素组成的
-
屏幕适配的发展史
写固定的值:iphone4之前
autoresizingMask:iphone5-5s
autolayout:ios6
sizeClasses:iPad
AutoresizingMask
- 注意:
- storyboard支持三种适配技术:
- autoresizingMask
- autolayout
- sizeClasses - autoresizingMask和autolayout不兼容
- sizeClasses的使用依托于autolayout
- 所以要体验autoresizingMask的功能,就要禁止掉其他两种适配技术
- storyboard支持三种适配技术:
- storyboard使用autoresizingMask
- 1.与父控件的间距
- 同时勾选左边和右边,只有左边会生效
- 同时勾选上边和下边,只有上边会生效 - 2.水平方向的线
- 3.竖直方向的线
- 1.与父控件的间距
- 代码中使用autoresizingMask
-
属性设置:
- LeftMargin:距离父控件左边的尺寸是可以拉伸的
- RightMargin:距离父控件的右边是可以拉伸的
- BottomMargin:距离父控件的底部是可以拉伸的
- TopMargin :距离父控件的顶部是可以拉伸的
- Height:高度会跟随父控件的高度进行拉伸
- Width:宽度会跟随父控件的宽度进行拉伸
-
局限性:
- 只能解决子控件和父控件之间的相对关系问题,有些任务无法实现
-
Autolayout
-
自动布局:专门用来布局UI界面,可以解决任何控件之间的相对关系
-
两个核心概念
- 约束:决定控件的位置和尺寸
- 参照:相对于谁来添加的约束
-
注意:使用autolayout就不要使用frame
-
autolayout的警告和错误
- 警告:控件的frame不匹配所添加的约束
- 错误:缺乏必要的约束或者是约束冲突
-
自动布局的核心计算公式
- object1.property1 = (object2.property2 * multiplier)+ constantValue
- 控件1的高度 等于 控件2的高度乘以0.5 加上20
-
利用autolayout可以实现的功能
- 动态修改UILabel显示的文字,实现包裹
- 父控件的高度可以随着子控件内容进行伸缩