セルには 2 つのサブビューがあり、1 つは、もう1 つはです。は常に存在するとは限りませんが、セルに 1 つの画像 URL がある場合は、それを表示するか非表示にします。が非表示の場合、toを別の値に設定したい場合は、次のようになります。UITableViewCell
contentLabel
imageView
imageView
imageView
contentLabel
cell.contentView.bottom
[_contentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView.mas_left);
make.top.equalTo(self.contentView.mas_bottom).offset(20);
make.right.equalTo(self.contentView.mas_right).offset(-6);
_bottomConstraint = make.bottom.equalTo(_imageView.mas_top).offset(-14);
}];
[_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(_contentLabel.mas_left);
make.bottom.equalTo(self.contentView.mas_bottom).offset(-14);
}];
if (tweet.imageUrl) {
_imageView.hidden = NO;
[_imageView sd_setImageWithURL:tweet.imageUrl placeholderImage:[UIImage imageNamed:@"loading"] options:0];
} else {
_imageView.hidden = YES;
[_imageView sd_setImageWithURL:NULL];
}
if (_imageView.hidden) {
[_contentLabel mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(_imageView.mas_top).offset(0);
}];
}
しかし、私は常に以下のエラーメッセージを受け取りました:
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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<MASLayoutConstraint:0x7fef9cd178d0 UILabel:0x7fef9cd437e0.bottom == UIImageView:0x7fef9cd26260.top - 14>",
"<MASLayoutConstraint:0x7fef9caf5430 UILabel:0x7fef9cd437e0.bottom == UIImageView:0x7fef9cd26260.top>"
)
Will attempt to recover by breaking constraint
<MASLayoutConstraint:0x7fef9caf5430 UILabel:0x7fef9cd437e0.bottom == UIImageView:0x7fef9cd26260.top>
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.
それmas_updateConstraints
は古い制約を削除しなかったようですが、新しい制約を追加しました.2つは互いに競合していました。では、ランタイムに基づいて制約値を動的に更新するにはどうすればよいでしょうか?