我的项目中有一个简单的自定义 UITableViewCell,并且刚刚在表格中添加了一个编辑操作。一切看起来都很好,但是在编辑时缩进不起作用,并且编辑图标与内容重叠。(更不用说删除按钮了)
自定义单元格是在界面生成器中创建的,像往常一样具有标准约束,我已经尝试过覆盖类中的 layoutSubviews 方法,正如在其他地方提到的,没有运气如下;
(void)layoutSubviews
{
[super layoutSubviews];
float indentPoints = self.indentationLevel * self.indentationWidth;
self.contentView.frame = CGRectMake(
indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height
);
}
我还确认子视图实际上在 contentView 中,并且在视图和代码中一切似乎都很好。
单元格还具有以编程方式设置的缩进级别/宽度,并将掩码自动调整为自动宽度。
作为最后的手段,我可以以编程方式创建 UITableViewCell,但不要认为它有帮助。
根据建议,我还确保将单元格内容上的约束固定到超级视图。
也没有运气在代码中手动设置 de autoResizingMasks
- 编辑:
我手动将 contentView 的背景颜色设置为黑色,发现它在编辑模式下正确缩进,即使没有覆盖“layoutSubviews”。事实上,它比它更有效。
但是,如您所见,内容没有缩进。最初我认为单元格(UIImage)的内容不是 contentView 的子视图,而是对子视图进行 nslogging,表明它们是。
NSLog(@"%@", self.contentView.subviews);
"<UIImageView: 0xa477030; frame = (23 7; 31 50); autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xa477090>>"
我完全不知道为什么这种情况一直在这里发生。一定是一些与 iOS 6 新约束相关的隐藏约束。