亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

iOS-Autolayout自動布局

2019-11-14 19:31:23
字體:
來源:轉載
供稿:網友

1.前言  

•在iOS程序中,大部分視圖控制器都包含了大量的代碼用于設置UI布局,設置控件的水平或垂直位置,以確保組件在不同版本的iOS中都能得到合理的布局
•甚至有些程序員希望在不同的設備使用相同的視圖控制器,這就給代碼添加了更多的復雜性!
•自動布局AutoLayout的引入很好地解決了這一問題!
 
 

2.什么是AutoLayout  

AutoLayout是一種基于約束的,描述性的布局系統
–基于約束:和以往定義frame的位置和尺寸不同,AutoLayout的位置確定是以所謂相對位置的約束來定義的,比如x坐標為superView的中心,y坐標為屏幕底部上方10像素等
–描述性:約束的定義和各個view的關系使用接近自然語言或者可視化語言的方法來進行描述
–布局系統:用來負責界面的各個元素的位置
•AutoLayout為開發者提供了一種不同于傳統對于UI元素位置指定的布局方法。以前,不論是在IB里拖放,還是在代碼中寫,每個UIView都會有自己的frame屬性,來定義其在當前視圖中的位置和尺寸。而使用AutoLayout,就變為了使用約束條件來定義view的位置和尺寸
 

3.AutoLayout的優勢  

•解決不同分辨率和屏幕尺寸下view的適配問題,同時也簡化了旋轉時view的位置的定義。原來在底部之上10像素居中的view,不論在旋轉屏幕或是更換設備(ipad、iPad mini、iPhone 4或者是iPhone5/iPhone6/iPhone6plus)的時候,始終還在底部之上10像素居中的位置,不會發生變化
•使用約束條件來描述布局,view的frame會依據這些約束來進行計算
 

4.AutoLayout和Autoresizing Mask的區別  

•在iOS6之前,關于屏幕旋轉的適配和iPhone,iPad屏幕的自動適配,基本都是由Autoresizing Mask來完成的。但是隨著大家對iOS App的要求越來越高,以及今后可能出現的多種屏幕和分辨率的設備,Autoresizing Mask顯得有些落伍和遲鈍了。AutoLayout可以完成所有原來Autoresizing Mask能完成的工作,同時還能勝任一些原來無法完成的任務,其中包括:
•AutoLayout可以指定任意兩個view的相對位置,而不需要像Autoresizing Mask那樣需要兩個view在直系的view hierarchy中
•AutoLayout不必須指定相等關系的約束,它可以指定非相等約束(大于或者小于等);而Autoresizing Mask所能做的布局只能是相等條件的
•AutoLayout可以指定約束的優先級,計算frame時將優先按照滿足優先級高的條件進行計算
 

5.AutoLayout的基本使用  

•在創建約束之后,需要將其添加到作用的view上。在添加時要注意目標view需要遵循以下規則
•1)  對于兩個同層級view之間的約束關系,添加到他們的父view上
•2)   對于兩個不同層級view之間的約束關系,添加到他們最近的共同父view上
•3)  對于有層次關系的兩個view之間的約束關系,添加到層次較高的父view上
 

6.添加和刷新約束(代碼)  

 

-(void)addConstraint:(NSLayoutConstraint *)constraint

 

 •刷新約束的改變

 

-setNeedsUpdateConstraints

 

-layoutIfNeeded

 


[button setTranslatesAutoresizingMaskIntoConstraints:NO];

 

 

// 2.1 水平方向的約束NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];[self.view addConstraint:constraintX];// 2.2 垂直方向的約束NSLayoutConstraint *constraintY = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0f constant:0.0f];[self.view addConstraint:constraintY];

 

 

6.使用AutoLayout容易出現的錯誤 

•Ambiguous Layout 布局不能確定,即給出的約束條件無法唯一確定一種布局,也就是約束條件不足,無法得到唯一的布局結果。這種情況一般添加一些必要的約束或者調整優先級可以解決
•Unsatisfiable Constraints 無法滿足約束,問題來源是有約束條件互相沖突,因此無法同時滿足,需要刪掉一些約束
•現在使用IB可以比較容易地完成復雜約束,在實際開發中很少再會遇到遺漏或者多余約束情況的出現,有問題的約束條件將直接在IB中得到錯誤或者警告。
 
作者: 清澈Saup
出處: http://www.49028c.com/qingche/
本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 

 

 

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久久久久ntr影视| 国产专区欧美专区| 国产成人av网址| 国产精品高潮呻吟久久av黑人| 2019亚洲男人天堂| 91精品国产自产91精品| 91亚洲国产成人精品性色| 精品久久久久久久久久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产日本欧美一区二区三区| 日韩三级成人av网| 亚洲性日韩精品一区二区| 国产精品久久久久免费a∨大胸| 欧美视频在线观看 亚洲欧| 啊v视频在线一区二区三区| 亚洲国产精品久久91精品| 日韩欧美亚洲国产一区| 在线视频免费一区二区| 国产精品一久久香蕉国产线看观看| 久久6精品影院| 国产精品6699| 亚洲成成品网站| 91中文精品字幕在线视频| 国产精品一区二区三区免费视频| 亚洲精品免费在线视频| 亚洲午夜未满十八勿入免费观看全集| 日韩视频免费中文字幕| 日韩美女福利视频| 亚洲天堂成人在线视频| 成人天堂噜噜噜| 欧美老女人www| 国产精品一区av| 国产激情综合五月久久| 狠狠色噜噜狠狠狠狠97| 亚洲成人久久一区| 亚洲成人精品久久| 欧美午夜www高清视频| 久久精品91久久久久久再现| 国产精品久久久久999| 97免费中文视频在线观看| 久久全国免费视频| 久久精品国产v日韩v亚洲| 欧美日韩亚洲激情| 色婷婷综合成人av| 亚洲a成v人在线观看| 日韩精品在线观看网站| 亚洲成avwww人| 国产女人18毛片水18精品| 伊人激情综合网| 日韩中文字幕在线精品| 亚洲一区二区久久久久久久| 一区二区三区视频免费在线观看| 成人黄色免费网站在线观看| 日韩第一页在线| 中文一区二区视频| 国产精品久久久久免费a∨大胸| 夜夜躁日日躁狠狠久久88av| 亚洲国产日韩欧美在线动漫| 亚洲一区www| 亚洲欧美日韩高清| 亚洲欧美日韩另类| 亚洲人成电影网站色www| 91久久综合亚洲鲁鲁五月天| 欧美午夜美女看片| 欧美中文字幕精品| 久久久久久久国产精品视频| 久久网福利资源网站| 国产精品入口日韩视频大尺度| 青青a在线精品免费观看| 日韩在线免费视频观看| 黄色精品一区二区| 亚洲大胆美女视频| 国产成人免费av电影| 国产精品三级网站| 高跟丝袜一区二区三区| 亚洲一区亚洲二区亚洲三区| 欧美激情精品久久久久久久变态| 欧美激情第一页xxx| 久久久久久久久久久91| 97精品久久久| 欧美性xxxxx极品娇小| 欧美精品在线观看| 成人激情视频小说免费下载| 成人免费观看49www在线观看| 久久夜色精品亚洲噜噜国产mv| 亚洲肉体裸体xxxx137| 国产精品99久久久久久久久| 91精品视频观看| 91麻豆国产精品| 神马久久桃色视频| 成人性教育视频在线观看| 精品亚洲一区二区三区在线观看| 亚洲视频视频在线| 草民午夜欧美限制a级福利片| 欧美成aaa人片免费看| 欧美大片大片在线播放| 亚洲精品国产精品久久清纯直播| 亚洲色图欧美制服丝袜另类第一页| 国产精品观看在线亚洲人成网| 色777狠狠综合秋免鲁丝| 中文字幕自拍vr一区二区三区| 69av视频在线播放| 国产亚洲精品久久| 欧美日韩一区二区精品| 久久成人这里只有精品| 日本精品一区二区三区在线| 中文字幕在线看视频国产欧美在线看完整| 青草热久免费精品视频| 亚洲精品网站在线播放gif| 九九热这里只有精品免费看| 91系列在线播放| 久久久www成人免费精品张筱雨| 欧美中文在线字幕| 中文国产亚洲喷潮| 中文字幕日韩av| 国产精品青草久久久久福利99| 中文字幕久热精品视频在线| 国产精品高潮在线| 欧美限制级电影在线观看| 国产精品久久久久久久久久久久久久| 国模极品一区二区三区| 欧美午夜宅男影院在线观看| 91精品国产综合久久香蕉| 久久久国产一区| 欧美精品999| 97在线视频一区| 国产精品自拍偷拍视频| 久久精品国产91精品亚洲| 欧美性猛xxx| 亚洲美女又黄又爽在线观看| 亚洲第一色中文字幕| 成人a视频在线观看| 日韩欧美中文字幕在线播放| 久久九九全国免费精品观看| 欧美国产一区二区三区| 久久天堂电影网| 日韩中文第一页| 欧美孕妇毛茸茸xxxx| 美日韩丰满少妇在线观看| 91精品久久久久久久久久久久久久| 亚洲美女精品久久| 超碰日本道色综合久久综合| 成人黄色免费网站在线观看| 色综合亚洲精品激情狠狠| 在线视频日本亚洲性| 日韩免费视频在线观看| 欧美在线亚洲在线| 久久天堂电影网| 久久精品久久精品亚洲人| 亚洲成人性视频| 国产69精品久久久| 一区二区三区四区在线观看视频| 国产精品视频最多的网站| 国产美女精彩久久| 国模私拍一区二区三区| 国产一区二区三区在线观看网站| 欧美视频精品一区| 成人黄色在线播放| 欧美成人免费在线视频| 国产精品影片在线观看| 欧美日韩在线观看视频小说| 欧美风情在线观看| 精品国产鲁一鲁一区二区张丽| 欧美激情影音先锋|