在使用masonry設(shè)置布局時(shí),設(shè)置的約束并不會(huì)立即生效预愤,此時(shí)獲取frame都為0沟于。但有的時(shí)候,我們需要獲取此時(shí)的寬高等鳖粟,這時(shí)就需要設(shè)置控件的約束立即生效社裆。
其實(shí)很簡(jiǎn)單:用它的父視圖調(diào)用layoutIfNeeded就可以立即生效。
例如:
self.briefBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.contentView addSubview:self.briefBtn];
[self.briefBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.contentView);
make.top.mas_equalTo(self.checkBtn.mas_bottom);
make.width.mas_equalTo(40);
make.height.mas_equalTo(45);
}];
//只有父視圖調(diào)用了 layoutIfNeeded向图,后面ipTextField的frame設(shè)置才會(huì)生效
[self.contentView layoutIfNeeded];
self.ipTextField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.checkBtn.frame), CGRectGetMaxY(self.checkBtn.frame), dl_screenWidth()-CGRectGetWidth(self.checkBtn.frame)-CGRectGetWidth(self.briefBtn.frame), CGRectGetHeight(self.checkBtn.frame))];
[self.contentView addSubview:self.ipTextField];