JK *_*iho 7 uitableview reuseidentifier ios heightforrowatindexpath
我正在开发一个带有故事板的iOS 5项目,因此在IB中使用动态表格单元原型.在其中一个视图中,我有一个带有可变高度单元格的表视图,单元格高度根据内容的高度计算.
tableView:heightForRowAtIndexPath:首次显示表视图时,返回所有单元格的正确值.向下滚动几个项目时一切都很好,但随后出现问题:实际单元格似乎是正确的高度,包括它们的触摸区域,但它们的分隔符在错误的位置(在单元格内而不是它们之间)呈现.
从测量分隔符放置开始,似乎细胞重用可能与此有关.前三个单元格的分隔符正确呈现,但不是第四个.heightForRowAtIndexPath:为它返回正确的高度(在这种情况下为125像素),其包含的子视图都在正确的位置.但是,分隔符仅从前一个分隔符渲染108个像素,将其放置在单元格的125像素高区域内.
这是踢球者:108px是第一个表格单元格的高度,现在看不见了,可能会重复使用.我没有明确的证据,但似乎表视图忽略heightForRowAtIndexPath:了这些单元格,只是根据重用的单元格高度渲染分隔符.
这并不能解释为什么一堆较晚的较短单元格根本不会呈现分隔符.但这就是我必须继续下去的全部内容.
是否有解决方法,IB设置或其他可能有帮助的东西?
pfl*_*ger 22
我有同样的问题,分隔符在看似随机的位置显示.
事实证明问题是我压倒了layoutSubviews但忘了打电话[super layoutSubviews].添加该调用为我解决了问题.
小智 1
我也遇到了这个奇怪的问题。对于自定义表格单元格,添加图层作为分隔符可能是更好的选择。
在自定义表格单元格类的 initWith*** 方法中:
separator = [CALayer layer];
separator.backgroundColor = [UIColor colorWithWhite:0.8f alpha:1.0f].CGColor;
[self.layer addSublayer:separator];
Run Code Online (Sandbox Code Playgroud)
在layoutSubviews方法中更新分隔符的框架:
- (void)layoutSubviews {
CGFloat height = 1.0f;
separator.frame = CGRectMake(0.0f, self.frame.size.height - height, self.frame.size.width, height);
[super layoutSubviews];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |