我使用2个多线标签制作自定义单元格,并将此标签固定到所有边。在-tableView:heightForRowAtIndexPath:
iOS> = 8 时,我返回UITableViewAutomaticDimension
。但是当表视图出现时,单元格高度应该比应该大。向下滚动然后向上滚动单元格取正常高度。如何解决这个问题?
身高代码:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
return UITableViewAutomaticDimension;
}
static CCTopicTableViewCell *cell;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
cell = [tableView dequeueReusableCellWithIdentifier:@"topicCellIdentifier"];
});
cell.topic = [self.topics topicAtIndexPath:indexPath];
cell.bounds = CGRectMake(0, 0, CGRectGetWidth(self.tableView.bounds), CGRectGetHeight(cell.bounds));
[cell setNeedsLayout];
[cell layoutIfNeeded];
CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height + 1;
}
结果:
滚动后
:
答案 0 :(得分:9)
当我没有为iOS 8设置tableView的estimatedRowHeight并且每次设置多行标签的文本时更新preferredMaxLayoutWidth时,问题就消失了
答案 1 :(得分:2)
在viewDidLoad()方法或viewWillAppear()中设置自动尺寸(两个代码在同一位置)
tableView.rowHeight = UITableViewAutomaticDimension;
tableView.estimatedRowHeight = 160.0;//(Maximum Height that should be assigned to your cell)
访问Using Auto Layout in UITableView for dynamic cell layouts & variable row heights iOS 7和iOS 8的直观指南
答案 2 :(得分:2)
我通过设置" text"解决了这个问题。多行标签的属性为" nil":
_tableView.estimatedRowHeight = 44
_tableView.rowHeight = UITableViewAutomaticDimension
还有表格专长" estimatedRowHeight"和" rowHeight"应该正确设置:
var a = [[1,2,3],[4,5,6],[7,8,9]];
答案 3 :(得分:1)
Automatic dimension
对某些UILabel
效果不佳。只要确保你没有这样的对齐方式。