首先,我创建我的新标签:
UILabel *newLabel=[[UILabel alloc] init];
newLabel.font=[UIFont preferredFontForTextStyle:@"Body"];
newLabel.translatesAutoresizingMaskIntoConstraints=NO;
newLabel.numberOfLines=0;
newLabel.lineBreakMode=NSLineBreakByWordWrapping;
newLabel.text=[NSString stringWithFormat:@"This line is this: %@%@%@",resultString,resultString,resultString];
然后,我创建了各种约束:
NSArray *labelConstraints=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[label]"
options:0
metrics:nil
views:@{@"label": newLabel}];
//Merge the above constraint into a tracking array
labelConstraints=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[label]|"
options:0
metrics:nil
views:@{@"label": newLabel}];
//Again, move the constraint into a tracking array
//Later, we apply all constraints in the tracking array to self.
不幸的是,标签的表现不如预期。假设我正确阅读了上述约束,我的标签应该从包含视图的一个边缘水平移动到另一个边缘,而不是垂直绑定到任何给定高度。这应该与我设置的 numberOfLines=0 和 lineBreakMode=NSLineBreakByWordWrapping 相结合,使单元格水平拉伸以获取所有必要的行。相反,这条线将自己延伸到包含视图的边缘之外,以将所有内容都放在一条线上——我不知道为什么!
如果重要的话,[self] 是 UITableViewCell 的子类,我正在尝试对其进行编程以随内容大小动态缩放。如果我可以让单元格的内容正确布局,那么计算单元格的实际大小应该相对容易!