【发布时间】:2013-08-06 14:51:32
【问题描述】:
我在 IB 中设计了我的自定义单元,将其子类化并将我的插座连接到我的自定义类。我在单元格内容中有三个子视图,它们是:UIView (cdView) 和两个标签(titleLabel 和 emailLabel)。根据每行可用的数据,有时我希望在单元格中显示 UIView 和两个标签,有时只显示两个标签。我要做的是设置约束,如果我将 UIView 属性设置为隐藏,或者我将从超级视图中删除它,这两个标签将向左移动。我尝试将 UIView 前导约束设置为 10 像素的 Superview(单元格内容)和 10 像素的 UILabel 前导约束到下一个视图(UIView)。稍后在我的代码中
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(IndexPath *)indexPath {
// ...
Record *record = [self.records objectAtIndex:indexPath.row];
if ([record.imageURL is equalToString:@""]) {
cell.cdView.hidden = YES;
}
}
我正在隐藏我的 cell.cdView,我希望标签向左移动,但它们在 Cell 中的位置保持不变。我试图从 superview 中删除 cell.cdView 但它也不起作用。我附上了图片以阐明我的意思。
我知道如何以编程方式执行此操作,但我不是在寻找那个解决方案。我想要的是在 IB 中设置约束,我希望如果其他视图被删除或隐藏,我的子视图将动态移动。是否可以通过自动布局在 IB 中执行此操作?
.....
【问题讨论】:
-
更改约束值运行时 - 检查此answer
-
对于这种特殊情况,您还可以使用 UIStackView。当你隐藏 cd 时,标签会占据它们的空间
-
@MarcoPappalardo 这确实似乎是唯一正确的解决方案
标签: ios iphone cocoa-touch interface-builder autolayout