我的自定义单元格中有一个具有动态高度的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
,任何想法?
答案 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]];