最近在做 iPhone4 和 iPhone6 及 iPhone6 plus 的適配工作。由于歷史緣由沒有用 AutoLayout ,也由于歷史緣由老代碼的布局全是用數字1個1個寫死的。這就給適配帶來了莫大的困難。比以下面這段代碼:
1
2
3
|
UILabel ... |
0這類數字還好說,241就完全讓人摸不著頭腦,至于320這個改成屏幕寬度倒也就還好,但是28這類奇異數字又是甚么呢。這類代碼雖然寫起來容易,但是保護困難,可讀性極差,特別是有多個控件布局的時候,依賴關系不明顯,如果調劑布局需要挨個重新計算并設置值,極難保護。
集大成者莫過于此:
1
|
CGRect |
今天早上看到這代碼差點就抱著鍵盤哭了出來。
屏幕適配的分享
下面和大家聊1聊屏幕適配中需要注意的內容。
大條件是:純潔通過代碼設置坐標和大小的布局方案(我覺得還是 xib + autolayout 的組適合配起來更輕松1點)。
公道設計
布局雖然說是個體力活,但同時也是個藝術活。之所以稱之為設計,是由于一樣的設計稿可能有很多種實現方式。UIKit 提供了很多現成可用的控件,如何充分利用這些控件實現自己的布局結果就是1個需要思考的進程了。
舉個簡單的例子,1個滑動掛斷電話的按鈕,你可以通過 UIImageView 實現,添加按下的監聽然后跟隨手指移動,松手以后再動畫回到原地便可。你也能夠用 UIScrollView 實現,設置 ContentSize 寬于屏幕,從而控制滑塊范圍。固然你也能夠用 UISlider 實現,只需要設置滑塊的圖象便可。各有優劣,自行判斷。
數據語義
如果我想讓寬度為100的按鈕位于屏幕3分之1處,我可以設置它的 x 值為 57 輕松完成任務。這樣雖然簡單,但是過段時間再回來保護代碼的時候會對這樣的奇異數字手足無措,如果要調劑布局更是寸步難行。我覺得比較好的方法是把數據由來列出來,像這樣:
1
|
float |
這樣看起來就輕松多了:屏幕的3分之1處再往左半個寬度,也就是 x 的值。
相對布局
我們常常遇到很多控件同時出現的情況,比如3個從上往下順次間隔10像素的按鈕,可以這樣實現:
1
2
3
|
CGRect CGRect CGRect |
但是如果我們想把這3個按鈕同時下移,那我們就需要挨個設置1遍。比較好的方案是通過相對布局來實現。
1
2
3
|
CGRect CGRect CGRect |
固然甚么場景使用相對布局,針對哪些控件使用相對布局,這些就是我們需要設計的問題了。
層次關系
1般情況下,1個頁面內會出現很多控件,如果都通過
靈活精準
布局代碼的靈活性10分重要。比如兩個和屏幕等寬的按鈕,如果通過160設置寬度,現在iPhone61出以后就紛紜中槍了。再比如那種 CollectionView 的單元格寬度高度寫死了44.5的,最好是通過計算動態獲得。雖然有1定的計算量,但是在后期如果遇到設計變更甚么的,只需要改個宏定義的
下一篇 證券-專業術語