1 - Autolayout

在Autolayout之前朴沿,Autoresizing可以作屏幕適配,但局限性較大有些任務(wù)根本無法完成
相比之下授艰,Autol'ayout的功能比Autoresizing強(qiáng)大很多

什么是Autolayout

1.Autolayout是一種“自動(dòng)布局”技術(shù)辨嗽,專門用來布局UI界面的
2.Autolayout自iOS 6開始引入,由于Xcode 4的不給力想诅,當(dāng)時(shí)并沒有得到很大推廣
3.自iOS 7(Xcode 5)開始召庞,Autolayout的開發(fā)效率得到很大的提升
4.蘋果官方也推薦開發(fā)者盡量使用Autolayout來布局UI界面
5.Autolayout能很輕松地解決屏幕適配的問題

Autolayout的2個(gè)核心概念

           1. 參照
           2. 約束

Autolayout常用面板
01-約束處理


Snip20150821_36.png

02-相對


Snip20150821_37.png

03-對齊
Snip20150821_38.png

Autolayout的警告和錯(cuò)誤
- 警告:
控件的frame不匹配所添加的約束,
比如約束控件的寬度為100, 而控件現(xiàn)在的寬度是110
如下圖所示:


Snip20150821_40.png

- 錯(cuò)誤:
缺乏必要的約束,
比如只約束了寬度和高度, 沒有約束具體的位置
如下圖所示:


Snip20150821_39.png

- 兩個(gè)約束沖突,:
比如1個(gè)約束控件的寬度為100, 1個(gè)約束控件的寬度為110
如下圖所示:
Snip20150821_39.png

通過代碼添加Autolayout

但首先需要先了解一個(gè)類(NSLayoutConstraint)

一個(gè)NSLayoutConstraint對象就代表一個(gè)約束

創(chuàng)建約束對象的常用方法

+ (id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
view1 :要約束的控件
attr1 :約束的類型(做怎樣的約束)
relation :與參照控件之間的關(guān)系
view2 :參照的控件
attr2 :約束的類型(做怎樣的約束)
multiplier :乘數(shù)
c :常量
  • 自動(dòng)布局的核心計(jì)算公式
obj1.property1 =(obj2.property2 * multiplier)+ constant value

代碼實(shí)現(xiàn)Autolayout的步驟
- 利用NSLayoutConstraint類創(chuàng)建具體的約束對象
- 添加約束對象到相應(yīng)的view上
- (void)addConstraint:(NSLayoutConstraint *)constraint;
- (void)addConstraints:(NSArray *)constraints;

代碼實(shí)現(xiàn)Autolayout的注意點(diǎn)
- 要先禁止autoresizing功能,設(shè)置view的下面屬性為NO
view.translatesAutoresizingMaskIntoConstraints = NO;
- 添加約束之前来破,一定要保證相關(guān)控件都已經(jīng)在各自的父控件上不用再給view設(shè)置frame

添加約束的規(guī)則

在創(chuàng)建約束之后,需要將其添加到作用的view上
在添加時(shí)要注意目標(biāo)view需要遵循以下規(guī)則:
1)對于兩個(gè)同層級view之間的約束關(guān)系忘古,添加到它們的父view上


Snip20150821_41.png

2)對于兩個(gè)不同層級view之間的約束關(guān)系徘禁,添加到他們最近的共同父view上


Snip20150821_42.png

3)對于有層次關(guān)系的兩個(gè)view之間的約束關(guān)系,添加到層次較高的父view上


Snip20150821_43.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末髓堪,一起剝皮案震驚了整個(gè)濱河市送朱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌干旁,老刑警劉巖驶沼,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異争群,居然都是意外死亡回怜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門换薄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玉雾,“玉大人,你說我怎么就攤上這事轻要「囱” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵冲泥,是天一觀的道長驹碍。 經(jīng)常有香客問我,道長凡恍,這世上最難降的妖魔是什么志秃? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮咳焚,結(jié)果婚禮上洽损,老公的妹妹穿的比我還像新娘。我一直安慰自己革半,他們只是感情好碑定,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布流码。 她就那樣靜靜地躺著,像睡著了一般延刘。 火紅的嫁衣襯著肌膚如雪漫试。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天碘赖,我揣著相機(jī)與錄音驾荣,去河邊找鬼。 笑死普泡,一個(gè)胖子當(dāng)著我的面吹牛播掷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撼班,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼歧匈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砰嘁?” 一聲冷哼從身側(cè)響起件炉,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矮湘,沒想到半個(gè)月后斟冕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缅阳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年磕蛇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片券时。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孤里,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出橘洞,到底是詐尸還是另有隱情捌袜,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布炸枣,位于F島的核電站虏等,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏适肠。R本人自食惡果不足惜霍衫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侯养。 院中可真熱鬧敦跌,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惧笛,卻和暖如春从媚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背患整。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工膏萧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眠副,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓迈着,卻偏偏與公主長得像齐鲤,于是被迫代替她去往敵國和親昆码。 傳聞我的和親對象是個(gè)殘疾皇子昂秃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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