NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

要始終牢記一點:所有的約束都是NSLayoutConstraint類的成員,無論你是以何種形式建立他們的。

下列程式碼片段演示了使用視覺化格式(VFL)建立約束。

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@”V:[view1]-8-[view2]” options:NSLayoutFormatAlignAllLeading metrics:nil views:NSDictionaryOfVariableBindings(view1, view2)]];

或:

NSString *hvfl = @”H:|-20-[redView]-20-|”;

NSDictionary *views = @{@”redView” : redView};//NSDictionary *views = NSDictionaryOfVariableBindings(redView);

NSDictionary *metrics = @{@”space” : @20};

NSArray *hlcs = [NSLayoutConstraint constraintsWithVisualFormat:hvfl options:kNilOptions metrics:metrics views:views];

[self.view addConstraints:hlcs];

Format:VFL語句。

options:對齊方式。通過給選項引數賦0值來忽略選項。

metrics:VFL語句中用到的變數值。

views:VFL語句中用到的控制元件。

注意:

1.字首指定(H:或V:),當忽略座標時,約束預設為水平佈局;

2.每個檢視的變數名出現在方括號中(例如[view1]);

3.字串中檢視名稱的順序與佈局中檢視的請求順序匹配。這個順序一般是從頂到底或者從左到右;

變數繫結:

可以通過NSDictionaryOfVariableBindings( )來建立。他根據傳入的變數來建立一個字典,使用變數的名稱作為鍵,使用變數指向的物件作為值。

例如這個呼叫:

NSDictionaryOfVariableBindings(leftLabel, rightLabel);

就會建立下列這個字典:

@{@”leftLabel” : leftLabel, @”rightLabel” : rightLabel};

格式字串結構:

用於建立約束的格式字串要遵循一種如下指定的語法:

(<orientation>:)?(<superview><connection>)? <view>(<connection><view>) * (<connection><superview>)?

格式字串部件:

視覺化格式字串:

1.水平或垂直放置:

H: 或 V:

例如:V:[view1]-15-[view2]   將view2放到其頂部距離view1底部15點的位置

2.檢視:

[item]

例如: [view1]   檢視繫結字典將方括號所包圍的名稱同一個檢視例項相匹配

3.父檢視:

|

例如:H|[view1]|  使view1的寬度尺寸同父檢視的一致

4.關係:

==

<=

>=

例如: H:[view1]-(>=20)-[view2]

使view2的前緣距離view1後至少20點

5.度量:

metric

例如::[view1(<=someWidth)] V:[view1]-mySpacing-[view2] 度量是鍵。someWidth和mySpacing必須在傳遞的度量字典中對映為NSNumber值

6.齊平對齊

[item][item]

例如:H:[view1][view2] 使view1的字尾同view2的前緣齊平

7.靈活間隔

[item]-(>=0)-[item]

例如:[view1]-(>=0)-[view2] 根據需要,檢視可以伸展分離開,“至少分離0點”

8.固定間隔

[item]-gap-[item]

例如:V:[item]-20-[item] 使view1的底部距離view2的頂部20點

9.固定距離(檢視到檢視)

[item]–[item]

例如:[item]-[item]在兩個檢視間留下一個小的固定空間(8點)

10.固定高度或寬度

[item(==size)]

[item(size)]

例如:[view1(50)] 使view1沿著某個座標軸的範圍剛好50點

11.最大和最小寬度/高度

[item(>=size)]

[item(<=size)]

例如:[view1(>=50)][view1(>=50)] 限制view1在某個座標軸上的最大或者最小尺寸

12.同另一個檢視匹配高度/寬度

[item(==item)]

[item(<=item)]

[item(>=item)]

例如:[view1(==view2)]使view1沿著某個座標的尺寸和view2的一致

13.和父檢視齊平對齊

|[item]

[item]|

例如:V:|[view1] 使view1的頂部和父檢視頂部齊平

14.相對於父檢視的inset

|-[item]

[item]-|

例如:|-[view1]在某個座標軸上,在父檢視和view1之間放置一個固定的間隔(20點)

15.相對於父檢視的自定義inset

|-gap-[item]

[item]-gap-|

例如:H:|-15-[view1] 將檢視嵌入父檢視,並使其距離父檢視前緣15點

16.優先順序(從0到1000)

@value

例如:[view1(<[email protected])] 設定view1在某個座標軸上的最大尺寸為50點,優先順序為一個很低的值(20)

相關文章

程式語言 最新文章