3

我正在尝试使用 Autolayout 和 Interface Builder 来创建自定义 TableViewCell。我在 viewDidLoad 中设置了我的单元格,如下所示:

[tableView registerNib:[UINib nibWithNibName:@"BChatCell" bundle:Nil] forCellReuseIdentifier:@"ChatCell"];

然后我像这样使单元格出列:

- (UITableViewCell *)tableView:(UITableView *)tableView_ cellForRowAtIndexPath:        (NSIndexPath *)indexPath {
    BChatCell * cell = [tableView_ dequeueReusableCellWithIdentifier:@"ChatCell"];
    return cell;
}

当表格视图第一次加载时,它会正确加载:

在此处输入图像描述

但是,表格滚动后,自动布局中断:

在此处输入图像描述

以下是约束:

在此处输入图像描述

任何帮助将不胜感激。

4

2 回答 2

3

我有完全相同的问题。让我发疯,因为在细胞被重复使用之前,一切看起来都很棒。

我发现正在调整大小的视图不是单元格本身(始终是屏幕宽度),而是我拥有的内部内容视图。您可以在任何NSLog(@"%@", [theView constraints]);有助于调试的视图上打印所有约束

也试过无济于事:

  • 将所有重要视图和子视图设置为translatesAutoresizingMaskIntoConstraints=NO

  • 在里面手动设置边界-(void)prepareForReuse

  • 打电话setNeedsUpdateConstraints

问题是我已经命名了我的内部卡片视图"contentView",它已经是UITableViewCell. 更改它修复了调整大小的问题。

于 2014-03-11T21:53:57.447 回答
0

您的方法的问题是静态的前导和尾随。您的尾随常数是 200,当您旋转它时,您希望它变得超过 200(因为屏幕的宽度)。这打破了约束,可能在控制台中说你的约束有歧义,它会自动添加一个新的约束(这会导致奇怪的行为)。

  • 所以我的建议是尝试使尾随约束大于或等于 200并查看它是否有效。
  • 另一种解决方案是为该蓝色视图添加宽度约束并删除尾随约束。

我希望这有帮助!

于 2014-02-26T15:38:23.363 回答