我正在尝试使用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;
}
当表格视图首次加载时,它正确加载:
但是,在桌子滚动后,Autolayout会破坏:
以下是限制因素:
非常感谢任何帮助。
答案 0 :(得分:3)
我有完全相同的问题。让我发疯,因为在细胞重复使用之前,一切看起来都很棒。
我发现调整大小的视图不是单元格本身(总是屏幕宽度),而是我拥有的内部内容视图。您可以使用NSLog(@"%@", [theView constraints]);
打印任何视图上的所有约束,这有助于调试
也试着无济于事:
将所有重要的观看次数和子视图设置为translatesAutoresizingMaskIntoConstraints=NO
在-(void)prepareForReuse
致电setNeedsUpdateConstraints
问题在于我已将我的内部卡片视图"contentView"
命名为UITableViewCell
中已命名的视图。更改它修复了调整大小问题。
答案 1 :(得分:0)
您的方法的问题是静态前导和尾随。您的尾随常量为200,当您旋转它时,您希望它变得超过200(因为屏幕的宽度)。这打破了约束,可能在控制台中说你的约束条件含糊不清,它会自动添加一个新的约束(导致奇怪的行为)。
我希望这有帮助!