Autolayout-Autoresizing與Autolayout

作者:Mitchell 

一.關(guān)于iPhone屏幕的一些基本常識(shí)###

1.ios屏幕適配的尺寸####

  • iPhone的尺寸
    3.5inch、4.0inch、4.7inch、5.5inch
  • iPad的尺寸
    7.9inch民宿、9.7inch

2.點(diǎn)和像素的關(guān)系####

  • 非retina屏幕之中:
    • 1個(gè)點(diǎn)由1x1個(gè)像素組成
  • 在retina屏幕之中:
    • 1個(gè)點(diǎn)由2x2個(gè)像素組成(iPhone6Plus 3x3個(gè))

二、Autoresizing###

1像鸡、簡(jiǎn)介####

  • 在Autolayout之前活鹰,可做屏幕適配,但是有很大局限性只估。

2志群、具體使用方法以及局限性####

(1)用法#####
  • Autoresizing的核心用法就是6條線。上線左右以及空間內(nèi)的兩條紅色交叉線如圖:


    屏幕快照 2015-08-01 下午1.37.11.png
  • 具體用法:上下左右四條紅色的線分別表示此視圖距離父視圖的上下左右邊的約束各式多少蛔钙;
  • 中間兩條上下交叉的線表示锌云,此視圖的高度與寬度是否隨著父視圖的變化而按比例變化
(2)局限性#####

可以清楚的看到上面的用法中所說明的吁脱,所有的約束都是相對(duì)于父視圖來設(shè)置的桑涎,也就是Autoresizing的局限性'就是'只能表現(xiàn)父與子的關(guān)系而無法表達(dá)兄弟視圖之間的關(guān)系兼贡,這就是Autoresizing的雞肋所在攻冷。


三、Autolayout###

1遍希、簡(jiǎn)介####

  • Autolayout是一種布局技術(shù)等曼,專門用來布局UI界面的
  • Autolayout自iOS6開始引入,由于Xcode4的不給力孵班,當(dāng)時(shí)并沒有得到很大的推廣
  • 在iOS7(Xcode5)開始涉兽,Autolayout的開發(fā)效率得到很大的提升
  • 蘋果官方也推薦開發(fā)者盡量使用Autolayout來布局UI界面
  • Autolayout能輕松的解決屏幕適配的問題

2、核心概念####

  • 參照
  • 約束

3篙程、常用版面####

(1) 約束處理(resolve auto layout issues):#####
  • 界面樣式:
    屏幕快照 2015-08-01 下午6.53.09.png
  • 屬性說明:
    (1) Selected Views:已選中視圖的屬性
    • Update Frames:更新frame
    • Update Constraints:更新約束
    • Add Missing Constraints:添加丟失的約束
    • Reset to Suggested Constraints:將約束重置成建議的樣式

(2) All Views inView Controller:在控制器中的所有視圖的屬性
- Clear Constraints 刪除控制器中所有的約束(慎用)枷畏。

(2) 相對(duì)處理(Pin):#####
  • 界面樣式:


    屏幕快照 2015-08-01 下午6.53.01.png
  • 屬性說明:
    • Add New Constraints:
      4個(gè)方向,4條紅線的意思分別表示:距離上下左右的參照線的距離是多少虱饿。將虛線設(shè)置為實(shí)線之后拥诡,表示所設(shè)距離生效触趴。
      注意:上下左右的參照物是可以改變的,改變的方法就是點(diǎn)擊數(shù)字框右邊的向下箭頭來修改約束的參照物渴肉。
    • Constrain to margins:如果你點(diǎn)了constrain to margins冗懦,左右會(huì)有8個(gè)點(diǎn)的空擋,而是從8個(gè)點(diǎn)后開始計(jì)算約束仇祭,而沒有點(diǎn)時(shí)披蕉,已屏幕的0點(diǎn)開始計(jì)算。
(3) 對(duì)齊處理(Align):#####
  • 界面樣式:


    屏幕快照 2015-08-01 下午6.52.55.png
  • 屬性說明:
    • Leading Edges:左對(duì)齊
    • Trailing Edges:右對(duì)齊
    • Top Edges:上對(duì)齊
    • Bottom Edges:下對(duì)齊
    • Horizontal Centers:水平中心對(duì)齊
    • Vertical Centers:豎向中心對(duì)齊
    • Baselines:基線對(duì)齊
    • Horizontal Center in Container:對(duì)齊容器中的水平中心
    • Vertical Center in Container:對(duì)齊容器中的豎向中心

4乌奇、警告與報(bào)錯(cuò)####

  • 警告:一般是黃色的没讲,一般是由于我們當(dāng)前所設(shè)的約束與當(dāng)前視圖的位置不符。
  • 報(bào)錯(cuò):紅色的警告一般是由于約束錯(cuò)誤造成的礁苗,這種警告工程中一定要消除爬凑。

5、簡(jiǎn)單需求實(shí)例####

  • 實(shí)例一:
    • 需求:創(chuàng)建一個(gè)view使得它與上方的距離20试伙,左方的距離20嘁信,高100,寬100
    • 實(shí)現(xiàn):


      實(shí)例1.png

實(shí)例1.2.png

兩張圖片的區(qū)別就是在Update Frames 中選擇了Items of New Constraints 這個(gè)屬性的意思是當(dāng)我選擇了這個(gè)屬性之后疏叨,系統(tǒng)會(huì)在添加約束的同時(shí)自動(dòng)將視圖布局到約束所定義的位置與大小潘靖。

  • 實(shí)例二:
    • 需求:創(chuàng)建兩個(gè)view,左邊的view距離左考廉、上各20秘豹,右邊的view距離右、上各20昌粤,兩個(gè)圖片一樣的大小既绕,并且兩張圖片之間的距離是20。


      實(shí)例2初始圖.png
    • 思路:
      (1)設(shè)置視圖1:距離上面20涮坐,距離左邊20凄贩,Height設(shè)為100,這樣視圖1未確定的值就只有寬了袱讹,這個(gè)時(shí)候我們?yōu)橐晥D1添加右邊的約束屬性疲扎,如下圖所示,將參照的視圖改為view2捷雕,這樣我們就設(shè)置好了view1的所有屬性椒丧。

      實(shí)例2-1.png

      (2)設(shè)置視圖2:與視圖1的上方平齊,距離右邊20救巷,與視圖1等高,距離視圖1的距離是20浦译,最后再設(shè)置兩個(gè)視圖是等寬棒假,這樣就實(shí)現(xiàn)了我們的需求:

    • 實(shí)現(xiàn):
      (1)視圖一設(shè)置:


      實(shí)例2.1.png

      (2)視圖二設(shè)置:


      實(shí)例2.2.png

      (3)最終實(shí)現(xiàn):
      實(shí)例2.png
  • 實(shí)例三:
    • 需求:view1使得它與上方的距離20溯职,左方、右方的距離各為20帽哑,高50谜酒,view2在view1下方距離20,右邊距離父視圖20(與view1右對(duì)齊)妻枕,view2的寬度是view1的一半僻族。
    • 實(shí)現(xiàn):
      (1)先固定view1,設(shè)定左右上的約束并設(shè)定高為50.
      實(shí)例3.1.png

      (2)這個(gè)需求的重點(diǎn)是設(shè)置view2屡谐,首先與view1上方距離20鹰贵,右邊與view1對(duì)齊,那么寬度的設(shè)置體現(xiàn)了Autolayout的精華所在康嘉。
    • 方案一:先設(shè)置view2與view1等寬,之后雙擊view2的等寬的線籽前,將multiplier的值設(shè)為0.5亭珍。


      實(shí)例3.2.png
    • 方案二:
      (1)設(shè)置view2的居中對(duì)齊


      實(shí)例3.3.png

      (2)修改SecondItem中的屬性為Leading,這樣我們就實(shí)現(xiàn)了需求中所要的效果


      實(shí)例3.4.png

6枝哄、AutoLayout核心公式####

第一個(gè)Item的屬性 =(<=/>=)第二個(gè)Item的屬性*Multiplier+Constant

這就是Autolayout的精華所在.

7肄梨、總結(jié)####

  • Autoresizing:
    已經(jīng)是比較過時(shí)的設(shè)置適配方法了,而且有很大的缺陷挠锥,只能設(shè)置父子控件之間的約束众羡,不能設(shè)置兄弟控件之間的約束。所以在這里我們最好不要再開發(fā)中應(yīng)用蓖租。
  • AutoLayout:
    最流行的適配方式粱侣,蘋果積極推薦,非常強(qiáng)大好用的適配方法蓖宦。對(duì)提升開發(fā)中的效率有很大的幫助齐婴。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市稠茂,隨后出現(xiàn)的幾起案子柠偶,更是在濱河造成了極大的恐慌,老刑警劉巖睬关,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诱担,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡电爹,警方通過查閱死者的電腦和手機(jī)蔫仙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藐不,“玉大人匀哄,你說我怎么就攤上這事秦效。” “怎么了涎嚼?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵阱州,是天一觀的道長。 經(jīng)常有香客問我法梯,道長苔货,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任立哑,我火速辦了婚禮夜惭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铛绰。我一直安慰自己诈茧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布捂掰。 她就那樣靜靜地躺著敢会,像睡著了一般。 火紅的嫁衣襯著肌膚如雪这嚣。 梳的紋絲不亂的頭發(fā)上鸥昏,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音姐帚,去河邊找鬼吏垮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛罐旗,可吹牛的內(nèi)容都是我干的膳汪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼九秀,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旅敷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颤霎,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤媳谁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后友酱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晴音,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年缔杉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锤躁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡或详,死狀恐怖系羞,靈堂內(nèi)的尸體忽然破棺而出郭计,到底是詐尸還是另有隱情,我是刑警寧澤椒振,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布昭伸,位于F島的核電站,受9級(jí)特大地震影響澎迎,放射性物質(zhì)發(fā)生泄漏庐杨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一夹供、第九天 我趴在偏房一處隱蔽的房頂上張望灵份。 院中可真熱鬧,春花似錦哮洽、人聲如沸填渠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揭蜒。三九已至,卻和暖如春剔桨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徙融。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工洒缀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欺冀。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓树绩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隐轩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饺饭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 作為一個(gè)移動(dòng)端的程序員,布局永遠(yuǎn)都是需要打交道的東西职车,最初剛?cè)腴T那會(huì)瘫俊,用的storyboard,xib手動(dòng)拖拽的方...
    taosiyu閱讀 2,481評(píng)論 0 4
  • Auto Layout 翻譯過來就是自動(dòng)布局。在ios中Auto Layout 會(huì)根據(jù)我們?cè)谝晥D上所設(shè)置的約束來動(dòng)...
    遇見0620閱讀 13,298評(píng)論 1 6
  • 視圖項(xiàng)####### 約束用firstItem和secondItem屬性引用它所影響的視圖悴灵。這些屬性是只讀的扛芽,而且...
    花生兒閱讀 1,247評(píng)論 0 1
  • 目錄 0、前言 一积瞒、Auto Layout前世今生 二川尖、Auto Layout基礎(chǔ)知識(shí) 1.Auto Layout...
    浮游lb閱讀 24,597評(píng)論 3 89
  • 視聽說 ㈠了解到的重要概念 描述一件事的時(shí)候要包括:時(shí)間、地點(diǎn)茫孔、人物叮喳、事件…… ㈡怦然心動(dòng)的單詞 statue雕像...
    帥ai宇閱讀 93評(píng)論 1 0