手动设置UILabel宽度自动布局的高度

Posted

技术标签:

【中文标题】手动设置UILabel宽度自动布局的高度【英文标题】:Manual set the height of UILable with autolayout 【发布时间】:2014-12-23 06:58:16 【问题描述】:

我的自定义单元格中有一个动态高度的UIlabel,高度值是通过方法计算的:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

然后我通过传递之前计算的值来调用以下方法:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

但是,问题是我不能简单地设置label.frame = newFrame 以适应其内容,因为自动布局。

而且,我不想对故事板中的元素设置太多限制。我真正需要的是像lable.constraint.height = newHeight 这样的单行代码,有什么想法吗?

【问题讨论】:

【参考方案1】:

为你的标签设置约束。

[yourlabel setNeedsUpdateConstraints];

[yourlabel setTranslatesAutoresizingMaskIntoConstraints:NO]; 

NSLayoutConstraint *constraintHeight = [NSLayoutConstraint constraintWithItem:yourlabel
                                                                        attribute:NSLayoutAttributeHeight
                                                                        relatedBy:NSLayoutRelationEqual
                                                                           toItem:nil
                                                                        attribute:NSLayoutAttributeNotAnAttribute
                                                                       multiplier:1.0
                                                                         constant:newheight];

[yourlabel addConstraints:@[constraintHeight]];

【讨论】:

这对我不起作用,似乎无法添加新的约束。顺便说一句,我在进行单元配置时添加了此代码。 尝试将其添加到您的自定义单元格类中

以上是关于手动设置UILabel宽度自动布局的高度的主要内容,如果未能解决你的问题,请参考以下文章

我想将自动布局应用于 UILabel,例如灵活的高度和宽度

自动布局动画保持 UILabel 居中

如何使用自动布局将 UILabel 设置为 UICell 宽度的百分比

UILabel 宽度和自动布局的困难

UITableViewCell 中的自动布局 UILabel

如何使用自动布局将两个具有动态高度的 UILabel 与 UICollectionViewCell 的底部对齐