在文章《iPhone屏幕分辨率和適配規(guī)則(基礎(chǔ)篇)》和《iPhone屏幕分辨率和適配規(guī)則(規(guī)則篇)》中票罐,講了iPhone分辨率的基礎(chǔ)概念和適配規(guī)則。最后來講講這些規(guī)則在iPhone上是怎么實(shí)現(xiàn)的。
本文旨在讓非技術(shù)人員對iPhone屏幕適配技術(shù)有一個宏觀的了解,不對具體的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行探討狞悲。具體的實(shí)現(xiàn)細(xì)節(jié),請查看相關(guān)的開發(fā)文檔妇斤。
適配技術(shù)概述
iPhone 3GS之前摇锋,iPhone屏幕只有一個規(guī)格。所以沒有太多的適配問題趟济。早期的頁面只需要限定好位置就可以了乱投。
隨著iPhone逐步多屏幕尺寸化之后,每新增一種屏幕都進(jìn)行重新開發(fā)顷编,這無疑會給適配工作帶來大量的重復(fù)性工作戚炫。所以,在具體實(shí)現(xiàn)時媳纬,蘋果公司推出了一系列的適配技術(shù)双肤。旨在當(dāng)屏幕尺寸發(fā)生改變時,程序能夠自動適應(yīng)屏幕钮惠,而不會造成重復(fù)性的適配工作茅糜。
其中,autoResizing和autoLayout是兩種不同的屏幕適配技術(shù)素挽。
autoResizing
autoResizing是iPhone早期的一種適配技術(shù)蔑赘,目前已經(jīng)越來越少被使用了。
autoResizing可以做什么
autoResizing是用于設(shè)置子控件相對于父控件的位置關(guān)系的预明。
如圖可以看出缩赛,autoResizing可以設(shè)置如下關(guān)系:
- 相對于父控件固定頂距離。
- 相對于父控件固定底距離撰糠。
- 相對于父控件固定左距離酥馍。
- 相對于父控件固定右距離。
- 跟隨父控件橫向拉伸阅酪。
- 跟隨父控件縱向拉伸旨袒。
autoResizing應(yīng)用舉例
在這個例子中,設(shè)置了Button 1
:
- 相對于父控件左距離固定不變术辐。
- 相對于父控件頂距離固定不變砚尽。
設(shè)置了Button 2
:
- 相對于父控件頂距離固定不變。
- 相對于父控件右距離固定不變辉词。
- 橫向跟隨父控件拉伸尉辑。
可以看出,當(dāng)屏幕變化時较屿。Button 1
相對左距離和頂距離固定不變隧魄,而Button 2
隨著屏幕橫向拉大而拉大。
autoResizing的局限
autoResizing沒有提供控件之間的關(guān)系隘蝎,Button 1
和Button 2
之間的距離并不能設(shè)定购啄。所以,在屏幕改變時嘱么,很難控制兩個按鈕之間的空隙狮含。
所以,現(xiàn)在越來越少人使用autoResizing進(jìn)行適配曼振。
autoLayout
autoLayout是目前最流行且被廣泛使用的屏幕布局技術(shù)几迄。
autoLayout可以做什么
autoLayout提供了比autoResizing跟豐富的約束規(guī)則”溃可以說映胁,autoLayout是autoResizing升級版。
autoLayout可以設(shè)置:
控件自身
- 寬度甲雅。
- 高度解孙。
- 和屏幕等比例寬高。
控件與控件之間的關(guān)系
- 左對齊/右對齊/頂對齊/底對齊抛人。
- 水平中心對齊弛姜。
- 垂直中心對齊。
- 文本底線對齊妖枚。
- 等寬廷臼。
- 等高。
控件和父控件的關(guān)系
- 對齊水平绝页。
- 對齊垂直荠商。
- 左邊距/右邊距/頂邊距/底邊距。
autoLayout應(yīng)用舉例
設(shè)置Button 1
:
- 相對于父控件左距離固定抒寂。
- 相對于父控件右距離固定结啼。
- 對齊水平中心,固定距離屈芜。
- 和
Button 2
等高郊愧。 - 和
Button 2
等寬。
設(shè)置Button 2
:
- 寬度井佑。
- 高度属铁。
- 對齊水平中心,固定距離躬翁。
- 和
Button 1
等高焦蘑。 - 和
Button 1
等寬。
Button 1和Button 2設(shè)置了等高盒发、等寬例嘱,所以兩者會一直保持一樣大小狡逢。同時,設(shè)置對齊距離父控件中心的距離拼卵,能保證其居中對齊的效果奢浑。
SizeClass
SizeClass是基于AutoLayout的一種技術(shù)。必須跟AutoLayout一起腋腮,不能單獨(dú)使用雀彼。
SizeClass可以做什么
SizeClass并不是一種屏幕布局的技術(shù)。SizeClass可以讓開發(fā)人員針對不同的屏幕設(shè)置不同的布局即寡。
這是因?yàn)閕Phone 的橫屏和豎屏相差很大徊哑。考慮到iOS還支持iPad聪富,iPhone和iPad的頁面差異也很大莺丑。沒必要硬要適配兩種頁面。
完全可以針對iPhone和iPad的頁面特點(diǎn)單獨(dú)設(shè)計頁面善涨。
SizeClass的分類窒盐。
SizeClass對iOS設(shè)備進(jìn)行了分類。通過將寬度和高度分成三種類型:compact(緊湊)钢拧、any(任意)蟹漓、regular(正常)。從而分成9種不同的屏幕分類源内。
設(shè)備的對應(yīng)關(guān)系如下:
寬 | 高 | 設(shè)備 | 樣式 |
---|---|---|---|
compact(緊湊) | compact(緊湊) | iPhone 4 | |
compact(緊湊) | regular (正常) | iPhone豎屏 | |
regular(正常) | compact(緊湊) | iPhone橫屏 | |
regular(正常) | regular(正常) | iPad |
而Any則表示同時適配compact和regular葡粒。
假設(shè)我們要為iPhone和iPad分別設(shè)置布局,則需要將Phone的SizeClass設(shè)置成 w(compact)/h(regular)膜钓,將iPad的SizeClass設(shè)置成w(regular)/h(regular)嗽交,并分別對兩種屏幕進(jìn)行單獨(dú)的設(shè)計。
《iPhone屏幕分辨率和適配規(guī)則(基礎(chǔ)篇)》
《iPhone屏幕分辨率和適配規(guī)則(規(guī)則篇)》
《iPhone屏幕分辨率和適配規(guī)則(實(shí)現(xiàn)篇)》