適配
什么是適配?
適應、兼容各種不同的情況
移動開發中,適配的常見種類
-
系統適配
- 針對不同版本的操作系統進行適配
-
屏幕適配
- 針對不同大小的屏幕尺寸進行適配
屏幕適配
- iPhone的尺寸
- 3.5inch、4.0inch、4.7inch、5.5inch
- iPad的尺寸
- 7.9inch、9.7inch
- 屏幕方向
- 豎屏
- 橫屏
屏幕適配發展
- iPhone3GS\iPhone4
- 沒有屏幕適配可言
- 全部用frame、bounds、center進行布局
- 很多這樣的現象:坐標值、寬度高度值全部寫死
UIButton *btn1 = [[UIButton alloc] init];
btn1.frame = CGRectMake(0, 0, 320 - b, 480 - c);
-
iPad出現、iPhone橫屏
- 出現Autoresizing技術
- 讓橫豎屏適配相對簡單
- 讓子控件可以跟隨父控件的行為自動發生相應的變化
- 前提是:關閉Autolayout功能
- 局限性
- 只能解決子控件跟父控件的相對關系問題
- 不能解決兄弟控件的相對關系問題
- 出現Autoresizing技術
-
iOS 6.0(Xcode4)開始
- 出現了Autolayout技術
- 從Xcode5.0(iOS 7.0)開始,開始流行Autolayout
什么是Autolayout
- Autolayout是一種“自動布局”技術,專門用來布局UI界面的
- Autolayout自iOS 6開始引入,由于Xcode 4的不給力,當時并沒有得到很大推廣
- 自iOS 7(Xcode 5)開始,Autolayout的開發效率得到很大的提升
- 蘋果官方也推薦開發者盡量使用Autolayout來布局UI界面
- Autolayout能很輕松地解決屏幕適配的問題
Autolayout的警告和錯誤
-
警告
- 控件的frame不匹配所添加的約束, 比如
- 比如約束控件的寬度為100, 而控件現在的寬度是110
-
錯誤
缺乏必要的約束, 比如
只約束了寬度和高度, 沒有約束具體的位置
兩個約束沖突, 比如
1個約束控件的寬度為100, 1個約束控件的寬度為110