手动使用自动布局设置UILabel的高度

时间:2014-12-23 06:58:17

标签: ios uilabel autolayout constraints

我的自定义单元格中有一个具有动态高度的UI标签,高度值通过以下方法计算:

- (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 个答案:

答案 0 :(得分:1)

将约束设置为yourlabel。

[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]];