Ios 调整元件和UITableView在滚动条上的高度

Ios 调整元件和UITableView在滚动条上的高度,ios,objective-c,uitableview,uilabel,Ios,Objective C,Uitableview,Uilabel,我有一个带有多个ui标签的UITableView。问题是,当我从服务器接收数据时,这些单元格中的文本会动态变化。加载视图控制器时,它工作正常。但是当我滚动时,单元格的高度不会更新,因为heightForRowAtIndexPath只调用一次 以下是截图: 正如我在截图中所示,问题标签的尺寸减小,这导致了一个间隙(箭头所示) 这是我的cellForRowAtIndexPath: - (UITableViewCell *)tableView:(UITableView *)tableView ce

我有一个带有多个
ui标签的
UITableView
。问题是,当我从服务器接收数据时,这些单元格中的文本会动态变化。加载视图控制器时,它工作正常。但是当我滚动时,单元格的高度不会更新,因为
heightForRowAtIndexPath
只调用一次

以下是截图:

正如我在截图中所示,问题标签的尺寸减小,这导致了一个间隙(箭头所示)

这是我的
cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIndentifier = @"CustomCell";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier];
    if (cell == nil)
    {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentifier];
    }

    cell.question.autoDetectLinks = YES;

    // Used to populate cell from NSDictionary
    [self setDataToCell:cell AtIndexPath:indexPath];

    return cell;
}
这是我的自定义单元格的
布局子视图

- (void) layoutSubviews
{
    CGRect frame = self.question.frame;
    frame.size.width = 277.0f; //you need to adjust this value
    self.question.frame = frame;
    self.question.numberOfLines = 2;

    [self.question sizeToFit];
    // Place time below question
    CGRect timeFrame = self.time.frame;
    timeFrame.origin.y = self.question.frame.origin.y + self.question.frame.size.height + 5;
    self.time.frame = timeFrame;
    [self.time sizeToFit];
}
所以为了解决这个问题,我打电话给

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[_tableIndexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates]; 
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
这解决了我的问题,但降低了性能,即使在将动画设置为
UITableViewRowAnimationNone
之后,元素也会在设置之前跳跃。有更好的方法吗?我是否应该在其他地方调用
reloadRowsAtIndexPaths


谢谢。

好的,下面是经过编辑的答案: 问题在于您的
布局子视图中的
大小调整
。只需点击此链接即可解决您的问题:

如果您还希望单元格和标签动态调整为其对应的文本大小,但同时将时间标签直接置于其下方,则必须根据文本、字体和字体大小确定uilabel的大小。 有关更多信息,请参见此处:

添加-(UITableViewCell*)单元格,用于行索引路径:(NSIndexPath*)indexPath;代码。我已经编辑了这个问题。加上了,我正在做。但这不会更新不可见单元格的边框。标签的
numberOfLines
是否设置为0?在何处创建标签,cellForRowAtIndexPath没有帮助,因为在此代码中未使用标签。我已在customcell类的LayoutSubview中完成了此操作。正在更新问题。抱歉。如果你改变尺寸,我提供的链接中的答案会有什么帮助呢?