国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

代碼手寫ui,xib 和 storyboard間的博弈 Size Class 和 Auto Layout

2019-11-06 09:53:47
字體:
來源:轉載
供稿:網友

代碼手寫ui,xib 和 storyboard間的博弈

Size Class 和Auto Layout

1、各種布局的簡介。

2、各種布局的利弊。

3、如何取舍各種布局。

4、Size Class 和Auto Layout 的使用。

5、各種布局適配iOS橫豎屏旋轉。

一、各種布局的簡介。

    隨著iOS發展到今天,UI上的布局逐漸形成了三大主流派:

    第一種:使用純代碼寫UI及其布局。比如我們的CMSMoblie項目。就是典型的例子。

    第二種:使用單個xib文件組織viewController和view。比如我們的運維寶項目。

    第三種:使用storyBoard來通過單個或很少的幾個文件來構建全部UI。比如我們的CeiBar2項目。

    其實這三種方式布局各有優劣。所以各有適合的應用場景。

二 、各種布局的利弊

第一種:代碼手寫UI

優點:1、代碼可寫UI可從用性高。

2、適合大型項目多人開發。

缺點:1、寫代碼速度慢。

2、不好適配橫豎屏旋轉。

第二種:xibs

優點:1、可以少寫大量代碼,從而提高開發速度。

     2、xib的設計更加完美的體現了MVC的設計模式。

缺點:1、xib文件內容過于復雜,可讀性很差。

 2、導致多人開發提交合并代碼的痛苦。

 3、xib沒有邏輯判斷,也很難在運行是進行配置,不像使用代碼那樣無所不能。

第三種:storyBoard

優點:1、在StoryBoard中不僅可以看到每個ViewController的布局樣式,也可以明確地知道各個ViewController之間的轉換關系。

2、相對于單個的xib,其代碼需求更少,也由于集合了各個xib,使得對于界面的理解和修改的速度也得到了更大提升。

缺點:1、StoryBoard面臨的最大問題就是多人協作。

2、StoryBoard的另外的挑戰來源于ViewController的重用和自定義的view的處理。

3、因為相對于單個xib來說,StoryBoard文件往往更大,加載速度也相應變慢。

三、如何取舍各種布局。

    大型項目、自定義控件多、多人開發、需要多個項目重用的、建議用純代碼編寫UI界面。

    小項目、追求開發速度的項目、需要支持橫豎屏旋轉的項目。可以用xib和StoryBoard。

四、Size Class 和Auto Layout 的使用。

1、Size Class簡介

Size Classes。在 iOS8 中,我們不用再像以前那樣,一個頁面新建多個 xib 文件來適配不同類型的屏幕,現在我們可以把各種尺寸屏幕的適配工作放在一個文件中完成,然后可以通過不同類別的 Size 來定制各種尺寸的界面。換句話說,你眼前的 Storyboard 不是一個普通的 Storyboard ,而是一個九合一的 Storyboard ,可以管理九種類型的屏幕。

 

對于寬度和高度而言,都有三種情況:緊湊 (Compact) 、任意 (Any) 、正常 (Regular) ,所以一共有9個類別,在設置 Size Class 的時候頁面會有提示。比如寬為 Compact 高為 Any 的情況,提示為 3.5-inch、4-inch、4.7-inch的橫豎狀態下的屏幕:

2、AutoLayout和Autoresizing Mask的區別

描述:每個view的size inspector中都有一個紅色線條的Autoresizing的指示器和相應的動畫縮放的示意圖,這就是Autoresizing Mask。在iOS6之前,關于屏幕旋轉的適配和iphone,iPad屏幕的自動適配,基本都是由Autoresizing Mask來完成的。但是隨著大家對iOS app的要求越來越高,以及已經以及今后可能出現的多種屏幕和分辨率的設備來說,Autoresizing Mask顯得有些落伍和遲鈍了

第一點:AutoLayout可以指定任意兩個view的相對位置,而不需要像Autoresizing Mask那樣需要兩個view在直系的view hierarchy中。

第二點:AutoLayout不必須指定相等關系的約束,它可以指定非相等約束(大于或者小于等);而Autoresizing Mask所能做的布局只能是相等條件的。

第三點:AutoLayout可以指定約束的優先級,計算frame時將優先按照滿足優先級高的條件進行計算。

3、Auto Layout 的使用。

簡介:Auto Layout是在WWDC2012上被引入到iOS中的,從iOS6.0以后就開始支持,但是大多數的開發者還是習慣使用傳統的UI布局方式,雖然有一大部分開發者早已使用了Auto Layout,這其中大多數的開發者是在拖拽IB文件或者是使用StoryBoard時才會選擇用Auto Layout的布局方式。

Auto Layout是一種基于約束的、描述性的布局系統。也就是使用約束條件來描述布局,View的Frame會根據這些描述來進行計算。

在iOS6.0以后加入了一個新類:NSLayoutConstraint。我們可以使用可視化格式化語言Visual Format Languag的方式創建約束。

五、各種布局適配iOS橫豎屏旋轉。

1、結合我們的實際項目來講解。

本文參考文檔:

http://www.itjhwd.com/adaptive-layout-for-iphone6-1/

http://www.cocoachina.com/swift/20141013/9893.html

http://www.2cto.com/kf/201409/334180.html

http://blog.csdn.net/dongbaojun_ios/article/details/12566529

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福安市| 襄垣县| 都昌县| 获嘉县| 乐山市| 湘阴县| 玉环县| 武隆县| 鲜城| 隆化县| 常山县| 台安县| 青海省| 格尔木市| 永吉县| 阿瓦提县| 宁强县| 乐至县| 介休市| 玛沁县| 鄂托克旗| 永善县| 新泰市| 库尔勒市| 平湖市| 长垣县| 江山市| 平阳县| 洪泽县| 赤峰市| 武平县| 阿瓦提县| 南陵县| 威远县| 宜兰县| 盐源县| 扎赉特旗| 松江区| 吴堡县| 钦州市| 鹤壁市|