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中完成了此操作。正在更新问题。抱歉。如果你改变尺寸,我提供的链接中的答案会有什么帮助呢?