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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

掌握iOS自動(dòng)布局

2019-11-14 19:18:51
字體:
供稿:網(wǎng)友

1,自動(dòng)布局是一種基于約束的布局(constraint-based layout)引擎,它可以根據(jù)開發(fā)者在對(duì)象上的約束自動(dòng)調(diào)整大小與位置。

2.在iOS 6之前使用的布局模型是“sPRing&struts”模型。雖然大部分情況下運(yùn)行很有效率,但旋轉(zhuǎn)時(shí)仍然需要寫代碼為子視圖自定義布局。

3.布局代碼在layouSubviews方法中編寫。

4.在Xcode 5中使用自動(dòng)布局時(shí)第一個(gè)引人注目的變化是Xcode 5不會(huì)自動(dòng)添加約束,除非你明確的要求Xcode添加。

    Xcode 5讓開發(fā)者控制布局,不會(huì)自動(dòng)添加約束。

    如果添加的約束不夠定義布局,Xcode 5的故事板或者Interface Builder的編譯器會(huì)生成警告,還會(huì)給出修復(fù)建議。

    在Xcode 5中,如果沒有添加任何約束,IDE會(huì)自動(dòng)在運(yùn)行時(shí)添加固定的位置和大小約束。

5.在Xcode 5中使用自動(dòng)布局

打開故事板,可以看到如下四個(gè)按鈕:

    

Align(第一個(gè)):用來添加對(duì)齊約束。

Pin():添加標(biāo)準(zhǔn)約束,比如相對(duì)于其他視圖的大小和位置。

Reslove(解決) Auto Layout Issues(情況):可以讓Xcode 自動(dòng)生成約束,或者基于約束把子視圖的邊框更新到正確的位置。

    

Resizing Behavior:可以用來設(shè)置哪些類會(huì)繼承這些約束。默認(rèn)情況下,Siblings and Ancestors(兄弟姐妹和祖先)和Descendants(后代)都是選中狀態(tài)。但是推薦把Silbings和Ancestors留空。如果選中的話,對(duì)齊視圖中的子視圖會(huì)變得很困難,子視圖的原點(diǎn)固定,當(dāng)你設(shè)置子視圖的大小時(shí),祖先視圖會(huì)跟著變,這樣很煩人。在創(chuàng)建布局時(shí),會(huì)用到其他三個(gè)菜單按鈕。

6.固有尺寸

iOS中大部分控件元素都有固有尺寸。打開尺寸查看面板(size inspector),會(huì)發(fā)現(xiàn)有些屬性(eg:高度和寬度)無(wú)法修改。

7.固有尺寸和本地化

UILabel和UIButton的固有尺寸很有意思。固有尺寸反應(yīng)了其內(nèi)容,標(biāo)題越長(zhǎng),標(biāo)簽的固有尺寸越寬,這種特性搭配自動(dòng)布局能夠容易創(chuàng)建可以根據(jù)不同語(yǔ)言的內(nèi)突自動(dòng)調(diào)整尺寸的按鈕和標(biāo)簽。

8.設(shè)計(jì)時(shí)和運(yùn)行時(shí)布局

    Xcode 5不會(huì)自動(dòng)添加約束。相反,如果添加的約束不能無(wú)歧義的描述布局,Xcode 5會(huì)顯示一系列的警告或者錯(cuò)誤,而且會(huì)高亮布局中的歧義。

    大部分情況下,任何會(huì)導(dǎo)致用戶界面錯(cuò)誤布局的情況都會(huì)產(chǎn)生警告,并且運(yùn)行時(shí)崩潰(主要由帶歧義的約束造成)會(huì)被視為錯(cuò)誤。設(shè)計(jì)時(shí)(即設(shè)計(jì)階段,相對(duì)運(yùn)行時(shí)而言)有問題的控件會(huì)用黃色實(shí)線框框起來,運(yùn)行時(shí)有問題的控件則用紅色虛線框框起來。

    黃色框突出了有問題的控件,顯示其在設(shè)計(jì)時(shí)的大小和位置,紅色框則顯示了其在運(yùn)行時(shí)的大小和位置。

    不要手動(dòng)添加缺失的約束,點(diǎn)擊第三個(gè)菜單按鈕,選擇“Add Missing Constraints”來讓Xcode 自動(dòng)添加。

9.自動(dòng)更新邊框

當(dāng)某個(gè)視圖位置不對(duì)時(shí)會(huì)出現(xiàn)如下所示的警告:

    

可以點(diǎn)擊第三個(gè)按鈕并選擇Update Frames來消除這種警告。

10.頂部和底部布局引導(dǎo)

    在iOS 7中,每個(gè)視圖控制器都有兩個(gè)屬性,叫做topLayoutGuide和bottomLayoutGuide。Xcode 5將其顯示為IB文檔中的對(duì)象。我們可以把視圖相對(duì)于這兩個(gè)屬性對(duì)齊。

11.輔助編輯器中的布局預(yù)覽

Xcode 5的輔助編輯器也能預(yù)覽用戶界面,可以模擬iOS 6和iOS 7設(shè)備,以及橫屏及豎屏。只要打開輔助編輯器,點(diǎn)擊頂層路徑式導(dǎo)航欄菜單的第一個(gè)按鈕,選擇Preview,就能在輔助編輯器面板中看到用戶界面預(yù)覽。預(yù)覽面板會(huì)隨著文檔的修改而實(shí)時(shí)更新。

12.在設(shè)計(jì)時(shí)調(diào)試自動(dòng)布局

    Xcode 5調(diào)試自動(dòng)布局比以前容易的多,以前只能在各種設(shè)備上運(yùn)行應(yīng)用然后等著崩潰。Xcode 5允許開發(fā)者在設(shè)計(jì)時(shí)可視化的處理這些崩潰。光這一點(diǎn)就是工作流上的巨大改進(jìn)了。

    自動(dòng)布局有兩類主要問題,第一類發(fā)生在約束集不足以定義所有可能的屏幕方向/尺寸下的布局時(shí)。第二類則是太多約束導(dǎo)致至少在一種屏幕方向下會(huì)產(chǎn)生沖突時(shí)發(fā)生的。

    第一類問題大體上可以分為兩種,邊框歧義和視圖擺放錯(cuò)誤。當(dāng)你沒有添加約束來無(wú)歧義的確定視圖在運(yùn)行時(shí)的位置和大小時(shí)就會(huì)產(chǎn)生邊框歧義。視圖擺放錯(cuò)誤則是邊框歧義的副作用。設(shè)計(jì)時(shí)視圖的大小和位置可能和運(yùn)行時(shí)的大小和位置不匹配,這是Xcode 會(huì)警告視圖擺放錯(cuò)誤。通常添加必要的約束就能解決這個(gè)問題。

    顧名思義,約束沖突發(fā)生在添加的約束互相之間會(huì)產(chǎn)生沖突時(shí),這個(gè)時(shí)候,自動(dòng)布局引擎會(huì)試圖在運(yùn)行時(shí)破壞約束(并且會(huì)打印一條消息列出被破壞的約束)并布局,如果失敗就會(huì)產(chǎn)生運(yùn)行時(shí)崩潰。約束沖突是僅有的無(wú)法在設(shè)計(jì)時(shí)發(fā)現(xiàn)的布局錯(cuò)誤。在部分情況下,約束都是在某種屏幕方向下沖突的,可能你添加的約束在豎屏的情況下工作良好,到了橫屏情況下卻互相沖突了。

13.在自動(dòng)布局中使用滾動(dòng)視圖

14.使用自動(dòng)布局和邊框

15.可視格式化語(yǔ)言及其缺點(diǎn)

16.調(diào)試布局錯(cuò)誤

    調(diào)試臺(tái)日志會(huì)列出自動(dòng)布局的約束。

 


我的CSDN博客地址:http://blog.csdn.net/qw963895582/article


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 交城县| 荆门市| 浪卡子县| 太仆寺旗| 阿拉善盟| 乌鲁木齐市| 盘锦市| 绥中县| 陇川县| 通道| 大足县| 东莞市| 卢氏县| 台北县| 峡江县| 宣化县| 丰镇市| 蚌埠市| 新蔡县| 珠海市| 汶上县| 阿拉善左旗| 区。| 新沂市| 航空| 舞阳县| 荔波县| 长白| 镇坪县| 郸城县| 博兴县| 晋州市| 桐柏县| 呼和浩特市| 昌图县| 镇坪县| 灌南县| 邢台市| 广东省| 乐至县| 巴林左旗|