我正在尝试计算使用自动布局布局的表格视图单元格的高度。由于这也必须与iOS7兼容,我需要返回heightForRowAtIndexPath:
的有效高度。
我正在做的是以下内容:
if (self.userRatingsAbbreviatedTextCell == nil) {
self.userRatingsAbbreviatedTextCell = [[UserRatingsAbbreviatedTextCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}
[self.userRatingsAbbreviatedTextCell prepareForReuse];
UserRating *rating = [self.paginationModel ratingAtIndex:reviewIndex];
[self.userRatingsAbbreviatedTextCell configureCellForHotelUserRating:rating];
[self.userRatingsAbbreviatedTextCell layoutIfNeeded];
CGSize size = [self.userRatingsAbbreviatedTextCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height;
该单元格有披露指标。当我向单元格询问其contentView
宽度时,它是296
。但是,在单元格出列后cellForRowAtIndexPath:
中,contentView
宽度为289
,这是用于渲染的大小。有没有人遇到过这样的问题?我需要做什么才能让单元格正确设置其contentView
宽度?
答案 0 :(得分:0)
我对contentView
的解决方案与UITableViewCell
的大小不同。可能会打破一些UITableViewCell
的先天属性,例如附件视图。
在您的单元格类中覆盖UITableViewCell
的{{1}}方法:
layoutSubviews
在我的情况下,- (void)layoutSubviews
{
[super layoutSubviews];
// force `contentView` to be the same size as `self` (it's typically 0.5pt smaller)
CGRect contentViewFrame = self.contentView.frame;
contentViewFrame.size = CGSizeMake(CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));
self.contentView.frame = contentViewFrame;
}
总是contentView
点较小,并且在计算0.5
的正确高度时会导致问题。我会计算出不会导致tableView:heightForRowAtIndexPath:
换行的单元格的完美高度,但由于高度UILabel
点太小,它总是会切掉最后一行。
我的手机,供参考: