自动布局和 UILabel 的问题
Posted
技术标签:
【中文标题】自动布局和 UILabel 的问题【英文标题】:Issue with Autolayout and UILabel 【发布时间】:2014-12-27 22:41:52 【问题描述】:我有一个包含 UItableView 的 UIView。我将表格视图固定在视图的角落。在我的单元格中,我有 1 个 UILabel,行数设置为 0,换行符设置为自动换行。我将 UILabel 固定在单元格内内容视图的 4 个角上。还将首选宽度设置为 300。
当我注销高度和宽度时,我得到 0。
我得到的图片:
这是我计算标签高度的代码:
-(CGFloat)tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return [self heightForCommentCellAtIndexPath:indexPath];
-(ECDCommentCell *)commentCellForRowAtIndexPath:(NSIndexPath *)indexPath
ECDCommentCell *cell = (ECDCommentCell *)[self.tableView dequeueReusableCellWithIdentifier:commentCellIdentifier];
[cell.layer setBorderWidth:1.0f];
[cell.layer setBorderColor:[[UIColor blueColor] CGColor]];
[cell.contentLabel.layer setBorderWidth:1.0f];
[cell.contentLabel.layer setBorderColor:[[UIColor greenColor] CGColor]];
[self configureCommentCell:cell atIndexPath:indexPath];
return cell;
- (void)configureCommentCell:(ECDCommentCell *)cell atIndexPath:(NSIndexPath *)indexPath
PFObject *commentObject = [self.commentResults objectAtIndex:indexPath.row];
//=============== Configure Comment Text
NSString *commentText = [commentObject objectForKey:@"content"];
[cell.contentLabel setText:commentText];
- (CGFloat)heightForCommentCellAtIndexPath:(NSIndexPath *)indexPath
static ECDCommentCell *sizingCell = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
sizingCell = [self.tableView dequeueReusableCellWithIdentifier:commentCellIdentifier];
);
[self configureCommentCell:sizingCell atIndexPath:indexPath];
return [self calculateHeightForConfiguredSizingCell:sizingCell];
- (CGFloat)calculateHeightForConfiguredSizingCell:(UITableViewCell *)sizingCell
sizingCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.tableView.frame), CGRectGetHeight(sizingCell.bounds));
[sizingCell setNeedsLayout];
[sizingCell layoutIfNeeded];
CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height + 1.0f; // Add 1.0f for the cell separator height
如果我添加一个固定高度,比如说 60,我会得到:
【问题讨论】:
抱歉我看不懂图片。当我最近面对这个问题时,也许我可以帮助你。但是,重要的是我要了解正在发生的事情。 在图片中,它们是返回的 3 行。表格视图有红色边框,单元格有蓝色边框,UIlabel 有绿色边框。我得到的返回高度对于高度和宽度都是零。 我添加了一张图片,显示我强制高度与使用自动布局计算它 @MatteoGobbi 我添加了一张图片,显示我强制高度与使用自动布局计算它 【参考方案1】:我犯了一个简单的错误。忘记合成我的标签了。
【讨论】:
以上是关于自动布局和 UILabel 的问题的主要内容,如果未能解决你的问题,请参考以下文章