我无法通过UITableViewController和UITableViewCell实现此效果。
我只是尝试在有图像时设置image.hidden = true
,而在不存在图像时设置image.hidden = false
,但空白区域不会消失。
一些想法实现这一点?谢谢!
答案 0 :(得分:1)
在这种情况下,我建议您动态更新约束。将imageview的高度约束连接到viewcontroller。
@IBOutlet var MyHeightConstraint: NSLayoutConstraint!
并在隐藏imageview时将其值设置为0
MyHeightConstraint.constant = 0
答案 1 :(得分:1)
您应该在UITableViewController中处理此问题。假设您正在使用autolayout,您应该设置约束以便使用和不使用图像。 例如,让我们假设您的单元格只是UIImageView和UILabel。
-----------
UIImageView
UILabel
-----------
你应该将图像顶部,右侧,左侧固定。 您应该将标签固定在底部,右侧,左侧,并在顶部有2个约束。一个到imageView,一个到superView。第一个优先级为999,第二个优先级为500.
在VC中,确定单元格高度时,如果没有图像,则必须:
此外,如果您的约束设置正确,您甚至可以执行以下操作:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
YourCellClass *cell = [self.tableView dequeueReusableCellWithIdentifier:kIdentifier];
// here you make your validations and setup your cell as we said before
// something like [cell setupForImage:UIImage andText:text];
return [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
}
有了这个,你甚至不用在硬编码你的身高,细胞就会为你做。
希望它有所帮助!!