UITableViewCell中动态高度的子视图

时间:2016-08-05 08:38:35

标签: iphone uitableview

这个问题是w.r.t xib以及在CellView中显示自定义UITableView的旧样式。我的观点中有autolayouts

我有一个DynamicSubView(动态高度)的UIView类型,我想在UITableViewCell中重复使用。为此,我尝试了两件事,

  • DynamicSubview添加为[cell.contentView addSubview:myDynamicView]
  • 在所有UIView的约cell.xib内添加了0-0-0-0 Left-Top-Right-Bottom个内容视图NSLayoutConstraint。我正在计算的高度identity inspector和在运行时更改。并将该视图的DynamicSubview设置为MyCell.m

DynamicSubView课程中,我添加了awakeFromNib&{在layoutSubView方法中,我正在计算DynamicSubView的动态高度。

我尝试在heightForRowAtIndexPath中添加与高度相关的代码,但是在表加载时它首次进入无限循环。

问题是细胞越来越重叠。我应该创建一个高度值数组并重新加载。任何更好的解决方案,以适当的高度重新加载细胞。

MyCell课程中的代码:

- (void)awakeFromNib
{
    [super awakeFromNib];
    self.myDynamicView = (DynamicSubView *)self.myContainerView;
    [self.myDynamicView setUpView:YES];
}

- (void)layoutSubviews
{
    [super layoutSubviews];

    [self.myDynamicView doSomething];
    self.c_height.constant = [self.myDynamicView getHeightOfDynamicSubview];

    //CGRect cellFrame = self.contentView.frame;
    //self.contentView.frame = CGRectMake(cellFrame.origin.x, cellFrame.origin.y, cellFrame.size.width, self.c_height.constant);
    self.cellHeight = self.c_height.constant;
 }

1 个答案:

答案 0 :(得分:0)

您可以在视图控制器中使用以下方法,而不是在tableViewCell中使用LayoutSubiew()

<强> SWIFT

self.tableView.estimatedRowHeight = 100(假设你的tableViewCell的最小高度为100)

func tableView(tableView:UITableView,heightForRowAtIndexPath indexPath:NSIndexPath) - &gt; CGFloat的  {         返回UITableViewAutomaticDimension  }