IOS 學習---storyboard 自動佈局

autoResizing:佈局

一共六條約束。spa

四周的四條約束:用於保證和其餘視圖的距離保持不變(若是勾選保持不變)code

中間的兩條約束:用因而否容許該視圖能夠縮放(若是勾選,則能夠縮放)繼承

缺陷:若是在一個父視圖上添加多個子視圖的時候,須要讓兩個子視圖存在某種約束的時候,不怎麼可能實現ip

經過代碼實現autoResizing字符串

view.autoresizingMask = UIViewAutoresizingNone;//默認不進行自動佈局
/*
默認不進行自動佈局
UIViewAutoresizingNone
設置表示可伸縮,至關於NIB文件設置不勾選   UIViewAutoresizingFlexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin        UIViewAutoresizingFlexibleTopMargin  UIViewAutoresizingFlexibleBottomMargin
設置表示可伸縮,至關於NIB文件設置勾選
設置橫向能夠縮放
UIViewAutoresizingFlexibleWidth  
設置縱向能夠縮放     UIViewAutoresizingFlexibleHeight
*/

autoLayout:重點it

一、使用autoLayout後,frame失效io

黃色(警告):繪製的視圖和添加約束後應該顯示的位置不一致,不影響顯示結果(使用update frame更新 frame值)class

紅色(警告):缺乏約束,約束衝突date

update frame:修改frame,以約束顯示視圖

update Constraint:修改約束,以frame顯示視圖

二、代碼建立約束

使用代碼建立autoLayout約束的時候,首先應該把autoResizing關掉

 view.translatesAutoresizingMaskIntoConstraints =NO;

建立方式

NSLayoutConstraint * right = [NSLayoutConstraint constraintWithItem:view
                                 attribute:NSLayoutAttributeRight
                                 relatedBy:NSLayoutRelationEqual
                                    toItem:self.view
                                 attribute:NSLayoutAttributeRight
                                multiplier:1
                                  constant:-90];

三、添加多個約束

思路:水平的視圖當作一組,垂直的視圖當作一組

VFL的語法總結:

(1)控件使用」[ ]」括起來

(2)控件之間只用」-」

(3)使用」H/V」表示方向,H:水平 V:垂直

(4)使用」|」表示父視圖的邊界

(5)對視圖自身顯示的時候使用」( )」,若是條件有多個用」,」隔開     [button(>= 50,<= 100)]

建立VFL字符串

    水平方向H:

    豎直方向V:

NSString *str =  @"H:|-20-[leftView]-20-[rightView(==leftView)]-20-|"

SizeClasses

使用SizeClasses必須使用Auto Layout

iOS8推出,iOS8以前的不能使用

一、將屏幕分爲九種狀況
寬:緊湊(compact)任意(any)寬鬆(regular)

高:緊湊(compact)任意(any)寬鬆(regular)

注意:若是在any狀況下添加約束,會被」繼承」

之後添加約束,最好別在含有any的狀況下設置

相關文章
相關標籤/搜索