在可視化編程中,利用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);
}];