首先是我想要的。我想让动态高度的单元格随着文本的长度而变化。像图像中的东西:
正如你所看到的,第二个细胞已经过了边缘。
我是怎么做到的?首先,我的表格有边缘布局:
我使用自己的xib文件创建了自定义SwitchCell:
Label具有以下自动布局设置:
切换这些:
在viewDidLoad中我设置了tableView属性:
tableView.registerNib(UINib(nibName: SwitchCellIdentifier, bundle: NSBundle.mainBundle()), forCellReuseIdentifier: SwitchCellIdentifier)
tableView.tableFooterView = UIView(frame: CGRectZero)
tableView.rowHeight = UITableViewAutomaticDimension;
tableView.estimatedRowHeight = 44.0;
在cellForRowAtIndexPath中我有这个:
...
var cell:SwitchCell = tableView.dequeueReusableCellWithIdentifier(SwitchCellIdentifier) as SwitchCell
cell.titleLabel.text = "Receive payments via multipay and lorem ipsum bla bla"
return cell
那么我做错了什么?我应该更改或添加什么?
答案 0 :(得分:2)
或许在标签上设置最大宽度约束,或者从其后端到superview设置> =约束。现在,横向的所有内容都是"等于"固定值。您需要限制标签宽度,使用它与Switch之间的不等式约束,和/或使用约束优先级来保持标签不扩展。 estimatedRowHeight和自动尺寸应该仍然允许它垂直扩展。 -
答案 1 :(得分:0)
因此,对于您的标签,您可以将自动缩小到最小字体大小,然后您可以避免在文本太长时消失。问题是你只是在你的xib中给出约束,而不是从xib到单元格,因此看起来就像那样,你应该在代码中进行检查,只需检查下面的代码,它可能会给你一个如何做到这一点的例子。
NSDictionary *metrics = @{@"viewWidth":[NSNumber numberWithFloat:size.width],
@"viewHeight":[NSNumber numberWithFloat:size.height]};
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(yourXibView);
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[yourXibView]-0-|"
options:0
metrics:metrics
views:viewsDictionary];
[self.view addConstraints:constraints];
并且不要忘记在上面的代码之前添加yourXibView.translatesAutoresizingMaskIntoConstraints = NO;
。这段代码只是在客观c中,但不要担心它在swift中具有相同的逻辑。
答案 2 :(得分:0)
尝试增加标签的内容拥抱优先级