我在自定义表格单元格中有两个UILabel
,每个都有"行"设置为" 0"在Interface Builder中。它们垂直堆叠,左右边缘对齐,在一个表格内,行高由自动布局决定。但其中一人坚持要求截断。为什么?它应该占用所需的线并推出表格单元的高度。
答案 0 :(得分:5)
您需要确保设置preferredMaxLayoutWidth
的{{1}}。 iOS8应该为你做这件事,但是当我有自定义动态大小的UILabel
时,我也遇到了被截断的问题。解决此问题的方法是将UITableViewCell
中的preferredMaxLayoutWidth
设置为标签的宽度。
答案 1 :(得分:2)
尝试拨打[cell.textLabel sizeToFit]
它将根据其内容调整labelview的大小。
答案 2 :(得分:0)
要获得自动细胞大小调整,您需要确保拥有以下内容(考虑到您使用自动布局)
这样,您的细胞将根据需要增长,您应该能够正确地看到您的标签。
由于
答案 3 :(得分:0)
cell和viewDidLayoutSubviews的layoutSubviews不起作用。您需要为单元格使用自定义容器视图,并在容器layoutSubviews中设置preferredMaxLayoutWidth。我有UIView的特殊子类
类ExtendedView:UIView {
var didLayoutSubviews:(()->Void)!;
override func layoutSubviews() {
super.layoutSubviews();
if let completion = didLayoutSubviews {
completion();
layoutIfNeeded();
}
}
}
使用示例
container.didLayoutSubviews = {[unowned self] in
let left = self.statusLabel.frame.minX - 4;
width = left - self.title.frame.minX;
self.title.preferredMaxLayoutWidth = round(width)
container.layoutIfNeeded()
}