【发布时间】:2026-01-11 15:30:01
【问题描述】:
我在UITableViewCell 子类的initWithStyle:reuseIdentifier: 方法中创建了这个约束:
[self.visualEffectView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[visualEffectView(50)]|" options:0 metrics:nil views:@{@"visualEffectView" : self.visualEffectView}]];
这应该限制UIVisualEffectView 占据屏幕的整个宽度,同时高度为 50 点并粘在单元格的底部。
但是,它显示正确但会导致此异常:
无法同时满足约束。
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x15c7783b0 UIVisualEffectView:0x15c5ae220.top == CustomCell:0x15c5ac140'cell'.topMargin>
我在这里做错了什么?
更新
setup 是从initWithStyle:reuseIdentifier: 调用的
-(void)setup
{
self.profileImageView = [UIImageView new];
self.profileImageView.contentMode = UIViewContentModeScaleToFill;
self.visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
[self addSubview:self.profileImageView];
[self addSubview:self.visualEffectView];
[self.profileImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.visualEffectView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[profileImageView]|" options:0 metrics:nil views:@{@"profileImageView" : self.profileImageView}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[profileImageView]|" options:0 metrics:nil views:@{@"profileImageView" : self.profileImageView}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[visualEffectView]|" options:0 metrics:nil views:@{@"visualEffectView" : self.visualEffectView}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[visualEffectView(50)]|" options:0 metrics:nil views:@{@"visualEffectView" : self.visualEffectView}]];
}
完整的错误信息:
"(
"<NSLayoutConstraint:0x12c5b2c40 UIVisualEffectView:0x12c753b90.top == CustomCell:0x12c751bb0'cell'.topMargin>",
"<NSLayoutConstraint:0x12c5b2ec0 V:[UIVisualEffectView:0x12c753b90(50)]>",
"<NSLayoutConstraint:0x12c5b2f10 V:[UIVisualEffectView:0x12c753b90]-(0)-| (Names: '|':CustomCell:0x12c751bb0'cell' )>",
"<NSLayoutConstraint:0x12c5ba110 'UIView-Encapsulated-Layout-Height' V:[CustomCell:0x12c751bb0'cell'(250)]>"
)"
【问题讨论】:
-
它与其他约束冲突。还请从控制台发布这些错误和整个错误。
-
您希望
VisualEffectView在单元格中垂直居中? -
@Jelly 不,我希望它固定在单元格底部,高度为 50
标签: ios uitableview autolayout constraints tableviewcell