//displayView
UIView *displayView = [UIView new];
displayView.backgroundColor = [UIColor blackColor];
[self addSubview:displayView];
//keybordView
UIView *keybordView = [UIView new];
[self addSubview:keybordView];
[displayView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.right.equalTo(self);
make.height.equalTo(keybordView).multipliedBy(.3f);
}];
[keybordView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(displayView.mas_bottom);
make.left.right.bottom.equalTo(self);
}];
//設置顯示位置的數字為0
UILabel *displayNum = [[UILabel alloc]init];
[displayView addSubview:displayNum];
displayNum.text = @"0";
displayNum.font = [UIFont fontWithName:@"HeiTi SC" size:70];
displayNum.textColor = [UIColor whiteColor];
displayNum.textAlignment = NSTextAlignmentRight;
[displayNum mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.and.right.equalTo(displayView).with.offset(-10);
make.bottom.equalTo(displayView).with.offset(-10);
}];
UIView *testView = [UIView new];
testView.backgroundColor = [UIColor redColor];
[keybordView addSubview:testView];
[testView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.equalTo(keybordView.mas_width).multipliedBy(.25f);
make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);
make.left.equalTo(keybordView.mas_left);
make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
}];
//我的理解mas_baseline是view的底部距離頂部的距離。注意參照點是頂部
//make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(1);
//等價testView的底部距離keybordView頂部的距離 = keybordView的底部距離距離頂部的距離 乘以 1

屏幕快照 2016-04-26 下午3.08.34.png
注解如下:
displayView 黑色區(qū)域
keybordView 圖中白色區(qū)域
現在要把紅色區(qū)域添加到白色區(qū)域
詳細代碼如下:
UIView *testView = [UIView new];
testView.backgroundColor = [UIColor redColor];
[keybordView addSubview:testView];
[testView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.equalTo(keybordView.mas_width).multipliedBy(.25f);
make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);
make.left.equalTo(keybordView.mas_left);
make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
}];
主要解釋如下這句代碼:
make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
}];
- mas_baseline是view的底部距離頂部的距離。注意參照點是頂部
因為
make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);
testView的高度等于keybordView的高度乘以0.2
所以
- make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(.2f);
根據代碼判斷:
- 等價testView的底部距離keybordView頂部的距離 = keybordView的底部距離距離頂部的距離 乘以 0.2
剛好和高度吻合
所以testView顯示的位置就剛好在keybordView的左上角的位置。頂部和keyboardView的頂部吻合。