我有一个UITableView
,其中包含使用自动布局在故事板中定义的自定义UITableViewCell
。单元格有几个多行UILabels
。
UITableView
似乎可以正确计算单元格高度,但对于前几个单元格,标签之间的高度没有正确划分。滚动一点后,一切都按预期工作(即使是最初不正确的单元格)。
- (void)viewDidLoad {
[super viewDidLoad]
// ...
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TestCell"];
// ...
// Set label.text for variable length string.
return cell;
}
有没有什么我可能会遗漏的,导致自动布局在最初的几次无法完成它的工作?
我创建了一个示例项目来演示这种行为。
在单元格中添加 [单元格布局如果需要]
对于
最初滚动到视图外的单元格不起作用。
它前面也没有[cell setNeedsLayout]
。
您仍然需要将某些单元格向外滚动,然后再回到视图中,才能正确调整它们的大小。
这是非常令人沮丧的,因为大多数开发人员都有动态类型,自动布局和自调整大小的单元格正常工作 - 除了这个烦人的情况。此 bug 会影响我所有“更高”的表视图控制器。
当其他类似的解决方案不起作用时,这对我很有效:
override func didMoveToSuperview() {
super.didMoveToSuperview()
layoutIfNeeded()
}
这似乎是一个实际的bug,因为我非常熟悉AutoLayout以及如何使用UITableViewAutomaticDimension,但是我仍然偶尔会遇到这个问题。我很高兴我终于找到了一些工作的变通办法。
我不知道这是否清楚地记录下来,但是在返回单元格之前添加[单元格布局IfNeed]
可以解决您的问题。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TestCell"];
NSUInteger n1 = firstLabelWordCount[indexPath.row];
NSUInteger n2 = secondLabelWordCount[indexPath.row];
[cell setNumberOfWordsForFirstLabel:n1 secondLabel:n2];
[cell layoutIfNeeded]; // <- added
return cell;
}
这是这样的场景:我有一个表格,其中有具有动态高度的单元格。在每个单元格中,我都有一个标签和一个开关。当我运行应用程序时,只能看到这两个,但然后我将开关设置为true,然后在这两个元素下出现一个(隐藏的?)文本视图,使单元格的高度更大。 我该怎么做呢?因为当我尝试隐藏元素时,也会出现。 我该怎么做?我尝试使用新的堆栈视图,它可以很好地处理它,但不是在表格单元格中。 我如何解决这个问题?
对于我的表视图单元格的动态高度,我从此链接中引用。在 UITableView 中使用自动布局进行动态单元格布局 这是我的表视图数据源和委托方法的代码 我有 2 个问题: > 我的问题是我在线路附近收到错误 在和。 为什么我必须在单元格中同时写入标签文本“和? 另外,我是否缺少实现单元动态高度所需的任何内容?
我有一个表格视图,每个单元格都有自己的高度,因此不适合使用。相反,现在我使用和。这意味着它调用单元格上的函数来确定它的高度。这一切都很好。 问题是当你重新加载屏幕上的单元格时。例如,向下滚动以显示单元格10,然后重新加载单元格10,效果很好。但是当您开始向上滚动,经过您已经看到的单元格时,它会恢复到每个单元格的estimatedRowHeight,完全不考虑< code>sizeThatFits,
问题内容: 我正在使用iOS 8新的自动调整大小的单元格。外观上效果很好-每个单元格都有合适的大小。但是,如果我尝试 滚动到最后一行 ,则表视图似乎不知道其正确大小。这是一个错误还是有解决办法? 重新创建问题的方法如下: 使用这个项目-TableViewCellWithAutoLayoutiOS8(从该SO答案引用),我按预期得到了自动调整大小的单元格。 但是,如果我要调用 scrollToRow
我需要显示一组具有不同高度的collectionViewCells。视图太复杂,我不想手动计算预期的高度。我想强制自动布局来计算单元格高度 在之外调用会破坏ColltionView并导致其崩溃 另一个问题是单元格不在单独的xib中,所以我无法手动实例化临时单元格并将其用于高度计算。 对此有什么解决办法吗? 编辑: 一旦被调用,就会发生崩溃。如果我不调用该方法并返回大小,则一切正常,单元格显示为没有
我觉得这可能是一个常见的问题,我想知道是否有任何共同的解决方案。 基本上,我的UITableView拥有每个单元格的动态单元格高度。如果我不在UITableView的顶部,并且我< code > table view . reloaddata(),向上滚动会变得不稳定。 我认为这是因为我在向上滚动时重新加载了数据,UITableView正在重新计算每个可见单元格的高度。如何减轻这种情况,或者如何只