因?yàn)槲乙彩莿倢W(xué)一兩個(gè)月,會(huì)的也不是太全皇忿,不過(guò)對(duì)于用Autolayout布局也算是有些心得了畴蹭。
????首先是storyboard底下那個(gè)W 和H的。鳍烁∵督螅看到了嗎?就是點(diǎn)一下之后彈了個(gè)可以點(diǎn)9個(gè)格子的東西幔荒。
????那個(gè)就代表著你寫的APP是給怎樣的屏幕用的糊闽,然后你將會(huì)在這類型的屏幕上做布局。所以說(shuō)是怎樣的屏幕呢爹梁?唔...其實(shí)他都有寫的右犹,我就偷懶了,不一一描述了姚垃。
我舉了其中兩種栗子來(lái)說(shuō)念链。
第一種是wChR。 他下面有描述积糯,就是所有的iPhone的豎屏情形掂墓,也就是說(shuō)你是用這個(gè)屏幕做布局是在iPhone豎屏下做布局。
第二種是wRhA看成。描述說(shuō)的就是所有均勻?qū)挾鹊牟季志啵热鏸Pad的橫屏或者豎屏。
簡(jiǎn)單地說(shuō)绍昂,你要是開發(fā)iPhone的豎屏啦粹,那么就選第一種,基本就沒(méi)問(wèn)題啦窘游。
---------------------華麗的分割線-------------------------
然后就是 SB右下角那3個(gè)布局功能啦
1唠椭、對(duì)齊功能 -----align約束
依次說(shuō)功能哈,英語(yǔ)好的就可以忽視了忍饰。
首先最上面的4+3贪嫂,也就是前7個(gè),對(duì)于單個(gè)View或者說(shuō)單個(gè)控件來(lái)說(shuō)是不能使用的艾蓝,聽(tīng)完他們功能就知道為什么了力崇,第一個(gè)到第四個(gè)(Leading ~ Bottom)分別就是左斗塘、右、上亮靴、下4個(gè)邊界的對(duì)齊馍盟。那你覺(jué)得如果只有一個(gè)控件你能怎么對(duì)齊呢?所以這4個(gè)用法是你同時(shí)框住幾個(gè)控件茧吊,然后勾上這個(gè)對(duì)齊贞岭,那么你選中的幾個(gè)控件就會(huì)在對(duì)應(yīng)的邊界對(duì)齊了。另外搓侄,其實(shí)常用的還有一種方法瞄桨,就是對(duì)其中一個(gè)控件按住control拖到另一個(gè)控件上放開,選擇LeadingTrailingTopBottom這四個(gè)選項(xiàng)對(duì)應(yīng)的就是這4個(gè)功能讶踪。
????中間3個(gè)跟前四個(gè)用法相似芯侥,功能不同,分別是水平中心線對(duì)齊乳讥,垂直中心線對(duì)齊柱查,和基線對(duì)齊,這個(gè)基線是可以自己設(shè)置哪條為基線的云石。
????最下面2個(gè)物赶,單個(gè)控件或者視圖也可以使用,因?yàn)樗麄兊墓δ苁鞘堑哪氵x中的這個(gè)控件或視圖在它所在的View中水平居中或者垂直居中留晚,其實(shí)也就是水平中心線對(duì)齊和垂直中心線對(duì)齊,只不過(guò)與他們對(duì)齊的對(duì)象是它的父視圖而已告嘲!
2错维、固定功能 -----pin約束
固定功能,意思就是用來(lái)固定你這個(gè)視圖或控件的橄唬,第一個(gè)上下左右分別填4個(gè)參數(shù)的就是和最近的控件或視圖的距離赋焕,比如說(shuō)左邊填了5,那么意思是如果你左邊有個(gè)控件仰楚,那么你選的這個(gè)控件的左邊界距離左邊那個(gè)控件的右邊界距離為5pt隆判,是不是很繞?慢慢想想吧~記住那個(gè)紅色虛線點(diǎn)了才會(huì)生效哦僧界。另外下面有個(gè)margins選項(xiàng)侨嘀,有沒(méi)有你們?cè)囋嚲椭懒耍褪菚?huì)多一段間隔出來(lái)的捂襟,雖然很多人都說(shuō)他是魔法margin咬腕,但是我目前還幾乎沒(méi)用過(guò)。還有待以后發(fā)掘他的好處了葬荷。
????然后就是本視圖或控件的定寬和定高涨共。添加了這兩個(gè)約束就會(huì)定長(zhǎng)了纽帖。
????接下來(lái)的2個(gè)需要多個(gè)控件或視圖一起用,跟之前的對(duì)齊一樣举反,他們分別是等寬和等高(這個(gè)在一行有幾個(gè)等寬視圖的時(shí)候用很好用哦)
????再接下來(lái)的Aspect Ratio懊直, 這個(gè)也就是等比,添加之后這個(gè)視圖的長(zhǎng)寬就會(huì)以你設(shè)定的值來(lái)顯示了火鼻。(比如用在一些imageView上室囊,服務(wù)器傳來(lái)的圖片是16:9的,那你的IV就也要16:9啦不然拉伸后可能就不太好看啦)
????接下來(lái)這個(gè)是對(duì)齊功能凝危,和第一個(gè)是一樣的~
3波俄、重新處理功能 ----- Resolve Autolayout Issue
????這個(gè)意思很明顯的,第一個(gè)更新視圖框架蛾默,也就是說(shuō)在你設(shè)置完約束之后你的視圖可能是在左邊懦铺,但是約束會(huì)讓他在右邊,然后就會(huì)出現(xiàn)右邊有個(gè)橙色虛線的框框
比如上圖這樣冬念,你一開始拖下來(lái)的控件在這里,也就是你看到的位置牧挣,但是你添加完約束之后急前,他實(shí)際位置應(yīng)該是橙色虛線框框那里的,那這是你選擇update frame之后你看到的這個(gè)控件就會(huì)去到橙色虛線那里瀑构,然后虛線會(huì)沒(méi)了裆针,不僅虛線,所有橙色線都會(huì)沒(méi)了寺晌,因?yàn)槟憧吹降目丶呀?jīng)和實(shí)際約束設(shè)定的位置重合了世吨。
????第二個(gè)就是更新約束,他會(huì)根據(jù)你現(xiàn)在看到的位置來(lái)添加約束并且固定他呻征,這個(gè)一般很少用耘婚,因?yàn)槲幢貢?huì)添加到你想要的約束哦。
????第三個(gè)也是自動(dòng)添加漏掉的約束陆赋,因?yàn)榧s束一定要用完全沐祷,也就是一定要讓這個(gè)視圖“有存在感”,舉個(gè)例子吧攒岛,你拖下來(lái)一個(gè)View赖临,然后只給他添加2個(gè)約束,一個(gè)是距離左邊界5灾锯,一個(gè)是距離右邊界5思杯,那上下呢?只有這兩個(gè)約束能固定住這個(gè)View嗎?顯然不能色乾,那么這樣的約束就是錯(cuò)誤的誊册。所以這個(gè)Add Missing 約束,就是可以添加缺少的約束暖璧。然后固定他案怯,但是也未必是你想要的哦。
????第四個(gè)是用他建議的約束澎办。
????第五個(gè)是清楚所有約束嘲碱。
---------------------華麗的分割線-------------------------
總結(jié):
你設(shè)置的約束必須具備兩個(gè)功能。
????????1局蚀、確定該視圖的位置
????????2麦锯、確定該視圖的大小
????但是要注意約束的沖突,比如你設(shè)定了2:1的等比約束琅绅,又對(duì)他設(shè)置300寬400高扶欣,那會(huì)報(bào)錯(cuò)的。
????然后剩下的就是多聯(lián)系布局了千扶,相信你很快可以熟練運(yùn)用Autolayout料祠!