我使用的UITableViewCell
包含少量ImageView
和Labels
。我已经给出了细胞如何寻找参考的图像。我需要Content标签根据其中的文本进行扩展和收缩,而不会干扰单元格内的任何其他视图。我是AutoLayouts
的新手,我正面临着它的问题。请帮忙。
答案 0 :(得分:1)
您需要在故事板中添加NSLayoutConstraint
,然后将其连接到代码中的属性。这是我用宽度做的一个例子,但你可以用高度做同样的事。
.h文件中的引用插座是:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraintAuctionHouseNameWidth;
然后在.m控制器文件中,我找出新标签的大小,并将约束设置为,如下所示。
然后,您需要确定标签中文本的大小,这将决定标签的大小以显示它。以下是我的工作方式:(auctionHouseObject.name
是进入标签)
//calculate width of label
CGRect r = [auctionHouseObject.name boundingRectWithSize:CGSizeMake(350, 0)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Montserrat-Bold" size:15]}
context:nil];
然后我以编程方式设置宽度。 (auctionHouseNameLabelMaxWidth
根据手机的屏幕宽度而有所不同)
if(r.size.width < auctionHouseNameLabelMaxWidth){
cell.constraintAuctionHouseNameWidth.constant = r.size.width + 2;
}
else{
cell.constraintAuctionHouseNameWidth.constant = auctionHouseNameLabelMaxWidth;
}
在故事板中设置其他约束,Autolayout应该处理其余的事情。