AutoLayout

在可視化編程中,利用AutoLayout來布局會節省很多的代碼和時間。

利用



來設置是視圖間的相對距離從而控制控件的間距。加載可以在該視圖代碼中寫一個加號方法。


+ (instancetype)initializeMoudelFunction{

return [[[NSBundle mainBundle]loadNibNamed:@"moudleFunction" owner:nil options:nil] lastObject];

}

在控制器中調用加號方法創建視圖。例如控件中有什么按鈕需要觸發就設置一個代理 可以先定義幾個自定義類型的屬性

typedef enum {

BtnTypeFirst,

BtnTypeSecond

}BtnType;

在按鈕拉下來的方法里面將不同的按鈕類型放到相應的方法中去。

在視圖控制器中利用switch來判斷幾個自定義的類型將操作寫在里面。


如果需要微調的話可以利用第三方Masonry來操作

為了防止循環引用將self.view給重新定義一下:

__weak typeof (self) weakSelf = self;

需要注意的是要用Masonry來進行操作就一定要先將子控件放到父控件上然后進行操作!不然會crash。一下代碼是設置一個居中的視圖并且尺寸是200x200

[oneView mas_makeConstraints:^(MASConstraintMaker *make) {

make.center.equalTo(weakSelf.view);

make.size.mas_equalTo(CGSizeMake(200, 200));

}];

如果想讓距離各個邊相對距離就將最后一行代碼替換為:

make.edges.mas_offset(UIEdgeInsetsMake(10, 10, 10, 10));


2.兩個視圖的相對距離

[oneView mas_makeConstraints:^(MASConstraintMaker *make) {

make.size.mas_equalTo(CGSizeMake(90, 90));

make.centerX.equalTo(weakSelf.view);

make.top.width.offset(90);

}];


[twoView mas_makeConstraints:^(MASConstraintMaker *make) {

make.size.mas_equalTo(CGSizeMake(100, 100));

make.centerX.equalTo(oneView);

make.top.equalTo(oneView.mas_bottom).with.offset(20);

}];

3.自動計算兩個視圖的寬

這個第三方有個要注意的地方 計算兩個控件之間的距離的時候以括號里的邊為原點如果在第一個控件在左邊就是負的 在右邊就是正的。

[oneView mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerY.mas_equalTo(weakSelf.view.mas_centerY);

make.left.equalTo(weakSelf.view.mas_left).with.offset(10);

make.right.equalTo(twoView.mas_left).with.offset(-10);

make.height.mas_equalTo(@150);

make.width.equalTo(twoView);

}];


[twoView mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerY.mas_equalTo(weakSelf.view.mas_centerY);

make.left.equalTo(oneView.mas_right).with.offset(10);

make.right.equalTo(weakSelf.view.mas_right).with.offset(-10);

make.height.mas_equalTo(@150);

make.width.equalTo(oneView);

}];


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容