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

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

AutoLayout的一些注意事項

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

要了解autolayout 首先要知道程序視圖啟動順序:

 

-(void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    NSLog(@"1");}-(void)updateViewConstraints{    [super updateViewConstraints];    NSLog(@"2");}-(void)viewDidLayoutSubviews{    //調用不止一次 跟子視圖的數量有關    [super viewDidLayoutSubviews];    NSLog(@"3");}-(void)viewDidAppear:(BOOL)animated{    [super viewDidAppear:animated];    NSLog(@"4");}updateViewConstraints方法中進行視圖上布局計算,得出各個控件的frame.但是此時并沒有將這些frame賦值給各個控件。在viewDidLayoutSubviews方法中,各個控件的frame賦值已經完成,但是并不是在這個方法中賦值的。
如果我們要代碼添加控件和約束,別忘了先去除控件的autoresizing ,否則會報出警告,因為二者會存在約束沖突。translatesAutoresizingMaskIntoConstraints=NO 代碼添加控件還應注意,控件的創建和添加應在updateViewConstraints 方法之前。否則 每次添加控件都會觸發updateViewConstraints方法,導致界面會抖動,以及出現不期望的結果。當我們使用自動布局時還應注意,控件分為兩種,一種是固定寬高的,另一種是不固定的依靠自身內容決定寬高的。比如 開關控件就是個固定大小的,它的大小就是那么大,不會改變。對于這種控件,我們只需要設定它的左邊和上邊的位置就可以了,設置好之后,這個控件還可以作為其他控件的約束參照。但是比如label 這樣根據內容決定寬高的控件,雖然在有內容時候,它也可以只設置左邊和上邊的距離,但是它不能作為其他控件的參照了,除非鎖定了它的寬高。比如 我們設定label ,距離左邊父控件 20 ,距離上邊父控件20.那么假如我們有另一個控件(假定為button)我們不可以設定button 距離左邊這個label 20。<span style="font-family: Arial, Helvetica, sans-serif;">自動布局中大多數控件都是好設定的,但是比較難搞的時scrollview 。因為它是靠自身內容的大小來決定它的大小的。比如,我們設定了scrollview  距離左上下右的距離都是20 ,那么它會提示警告。解決的辦法之一就是在scrollView內部再添加一個容器view,將這個view設定為與scrollview 完全貼近。然后將這個view的大小改為我們所需要的contentView的大小。最后再這個view中添加控件即可實現滾動。</span>
總體來說自動布局很好地解決了屏幕適配 ,尤其是橫豎屏切換的問題。大大簡化了我們的計算代碼,但是我們又有多少應用是同時支持橫豎屏的呢?而且自動布局使我們界面的動畫及控件的動態創建都收到了極大的影響,盡管這些影響都能解決,但是還是不如計算frame方便。而且自動布局盡管引入了vfl 語言簡化代碼,但是約束設置錯誤的話真的是很難查,如果我們需要使用動畫的話,需要將約束設置為屬性。設置成屬性的話,不如計算frame方便。如果你數學不是很差的話,建議你還是使用計算frame 來布局吧</span>

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州区| 射洪县| 措勤县| 宜阳县| 宕昌县| 永年县| 昭平县| 扶沟县| 辽阳市| 类乌齐县| 永城市| 南开区| 远安县| 盐津县| 恩施市| 新竹市| 天长市| 丰台区| 龙井市| 称多县| 屏东市| 丰城市| 岳阳县| 乐至县| 吴川市| 新化县| 济宁市| 三门县| 孝义市| 鸡泽县| 东阿县| 西和县| 仙居县| 建始县| 江源县| 浦江县| 凤台县| 张家港市| 高唐县| 汾阳市| 若尔盖县|