问题:
约束警告:Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<MASLayoutConstraint:0x7fa1e4f39270 UIView:0x7fa1e5007170.left == UIView:0x7fa1e519a300.left + 10>",
"<MASLayoutConstraint:0x7fa1e4f39ae0 UIView:0x7fa1e5007170.right == UIView:0x7fa1e519a300.right - 10>",
"<NSLayoutConstraint:0x7fa1e25a2130 UIView:0x7fa1e519a300.width == 0>"
)
Will attempt to recover by breaking constraint
<MASLayoutConstraint:0x7fa1e4f39ae0 UIView:0x7fa1e5007170.right == UIView:0x7fa1e519a300.right - 10>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
code:
-(UIView *)createFooterView{
UIView * view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 50.f)];
[view setBackgroundColor:[UIColor whiteColor]];
UIView * lineView = [[UIView alloc]init];
[view addSubview:lineView];
[lineView makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(view.centerY);
make.left.equalTo(view.left).offset(10);
make.right.equalTo(view.right).offset(-10); //此行与下行的比较 这么写不警告
// make.width.equalTo(SCREEN_WIDTH -w 20); //这么写 就有以上警告
make.height.equalTo(1.f);
}];
[lineView setBackgroundColor:[CommUtls colorWithHexString:@"#cecece"]];
UILabel * label = [[UILabel alloc]init];
[view addSubview:label];
[label setText:@" 已经到底部了 "];
[label makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(lineView.centerY);
make.centerX.equalTo(lineView.centerX);
}];
[label setFont:[UIFont systemFontOfSize:13.f]];
[label setTextColor:[CommUtls colorWithHexString:@"0x666666"]];
[label setBackgroundColor:[UIColor whiteColor]];
return view;
}
总结:将一个view赋给另个View时 未知宽度 左右约束 产生警告 ,控制宽度即可