我使用相同的公式来计算读/未读指示符的位置,但是,根据我是从tableViewController还是自定义tableViewCell类计算它,红点的位置也会改变(它也是如此)如果在tableViewController中计算,则单元格中的低,如果在单元格中计算,则它在中间完美)。唯一的区别是在tableViewController中我用cell
开始计算,而在tableViewCell类中我用self
开始它们,但是,它应该是相同的,因为我将单元格传入像这样的tableViewcontroller
- (void)configureCell:(MMTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
我的偏好是能够在tableViewController中进行设置计算(由于多种原因),但是,当我在自定义tableViewCell类中执行它们时,定位要好得多。
你能解释一下为什么会这样吗
来自自定义tableViewCell类的layoutSubviews
if (_unreadIndicator == nil) {
_unreadIndicator = [[MMCircles alloc] initWithFrame:CGRectMake(0, 0, 18, 18) andColor:[UIColor redColor]];
_unreadIndicator.circleColor = [UIColor blackColor];
[self.contentView addSubview:_unreadIndicator];
}
CGRect circleframe = self.unreadIndicator.frame;
circleframe.origin.x = self.contentView.frame.size.width - self.unreadIndicator.frame.size.width - 10;
circleframe.origin.y = (self.contentView.frame.size.height - self.unreadIndicator.frame.size.height) / 2.0;
self.unreadIndicator.frame = circleframe;
来自tableViewController的
circleframe = _unreadIndicator.frame;
circleframe.origin.x = cell.contentView.frame.size.width - cell.unreadIndicator.frame.size.width - 10;
circleframe.origin.y = (cell.contentView.frame.size.height - cell.unreadIndicator.frame.size.height) / 2.0;
_unreadIndicator.frame = circleframe;
[cell.contentView addSubview:_unreadIndicator];
来自tableViewController 的
中间点的图像是在自定义tableViewCell类中计算它的位置时,中心下方的红点的图像是在它的位置计算时tableViewController
答案 0 :(得分:0)
在您尝试计算表格视图控制器(cellForRowAtIndexPath:
)中圆圈位置的位置,单元格的视图层次结构尚未准备好进行计算。重新尝试执行 - 特别是,单元格的高度可能尚未设置。但是,在单元格自己的layoutSubviews
方法中,单元格最有可能设置其高度,并且更适合您尝试执行的操作。也就是说,在调用单元格cellForRowAtIndexPath:
之前,表格视图完成了从layoutSubviews
返回的单元格准备显示的其他内容。你的代码工作。