UITableViewCell动态高度与图像

时间:2015-09-19 00:05:51

标签: ios iphone xcode swift uitableview

我无法通过UITableViewController和UITableViewCell实现此效果。

enter image description here 我只是尝试在有图像时设置image.hidden = true,而在不存在图像时设置image.hidden = false,但空白区域不会消失。 一些想法实现这一点?谢谢!

2 个答案:

答案 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中,确定单元格高度时,如果没有图像,则必须:

  1. 反转优先级
  2. ImageView.alpha = 0
  3. [self layoutIfNeeded]
  4. 此外,如果您的约束设置正确,您甚至可以执行以下操作:

    - (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;
    }
    

    有了这个,你甚至不用在硬编码你的身高,细胞就会为你做。

    希望它有所帮助!!