uitableview 自动布局自定义单元格导致额外高度
Posted
技术标签:
【中文标题】uitableview 自动布局自定义单元格导致额外高度【英文标题】:uitableview autolayout custom cell causing extra height 【发布时间】:2017-07-13 09:53:14 【问题描述】:。在不同的项目中正常工作时无法检测到导致问题的位置。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
[_stubCell layoutSubviews];
[self configureCell:_stubCell atIndexPath:indexPath];
CGFloat height = [_stubCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height;
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
return 40.f;
- (void)configureCell:(CCACustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
cell.customLabel.text = [_tableData objectAtIndex:indexPath.row];
cell.customLabel.font = [UIFont fontWithName:@"Avenir-Light" size:16.0];
cell.customLabel.textColor = UIColorFromRGB(0x32383B);
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
CCACustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
[self configureCell:cell atIndexPath:indexPath];
return cell;
【问题讨论】:
请检查分配的 UILabel 的文本字符串是否在开头包含任何“\n”下一行字符。 没有朋友,下一行没有“\n”字符 @santanu,这些是动态单元格还是静态单元格??? 动态单元格... @santanu,你检查的屏幕尺寸是多少??? 【参考方案1】:您能否提供有关如何创建 _stubCell 的详细信息?这可能是由于标签的某些限制。 你试过计算字符串高度吗?
+(CGFloat )calculateStringHeight:(NSString *)string WithFont:(UIFont *)font andSidePadding:(CGFloat )padding
CGRect rect = [string boundingRectWithSize:CGSizeMake([[UIScreen mainScreen]bounds].size.width - (2*padding), 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@NSFontAttributeName:font context:nil];
return rect.size.height;
【讨论】:
【参考方案2】:您可以像这样为您的标签返回所需的高度。您应该在哪里传递您的描述标签宽度在 LABEL_DESCRIPTION_WIDTH。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGSize constrainedSize = CGSizeMake(LABEL_DESCRIPTION_WIDTH , 9999);
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:FONT_NAME size:FONT_SIZE], NSFontAttributeName,nil];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[_tableData objectAtIndex:indexPath.row] attributes:attributesDictionary];
CGRect requiredHeight = [string boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];
return requiredHeight;
【讨论】:
以上是关于uitableview 自动布局自定义单元格导致额外高度的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局在屏幕更改时调整自定义单元格中的 UIButton 字体
如何为具有与内置单元格相同的布局指标的“UITableView”提供自定义“UITableCell”?
具有自动布局的自定义 UITableViewCell 会导致警告
在 UICollectionView/UITableView 中为滚动视图的偏移设置动画会导致单元格过早消失