UITableViewCell子类布局在autoLayout-disabled Storyboard中搞砸了

时间:2014-02-18 02:03:37

标签: ios objective-c uitableview autolayout

我在故事板中创建了一个带有原型单元格的表视图,其中包含"使用Autolayout"在Xcode 5中未选中。

单元格是UITableViewCell的子类,主要是添加IBOutlets并且里面没有代码。结果是一个混乱的布局。我试着改变自动化面具而没有运气。还尝试了this

如果我实现了一个空的layoutSubviews,那么它显示正常。知道发生了什么事吗? auto layout still enabled虽然取消了检查,但仍然是吗?

修改

更多细节......

@interface SettingDefaultTableViewCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *label;
@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@property (nonatomic, weak) IBOutlet UIView *backgroundView;

@end

@implementation SettingDefaultTableViewCell

- (void)layoutSubviews
{
    // Emtpy implementation to fix weird layout bug
}

@end

禁用Autolayout的故事板:

enter image description here

未使用上述layoutSubviews修复时的结果:

enter image description here

编辑2:

  • 单元格设置为不自动调整子视图。
  • 虽然上述内容足以防止子视图自动调整,但所有自动调整遮罩都设置为灵活的右下边距。
  • 只有>标记设置为灵活的左边距。没有灵活的宽度或高度。

1 个答案:

答案 0 :(得分:0)

未记录的UITableViewCell layoutSubviews正在修改单元格:

  • 尽管设置了不自动调整大小的子视图,但默认实现会更改backgroundView框架。
  • 尽管配置为自定义样式单元格,它也会将imageView(“>”)移到左侧。

因此,避免执行超级layoutSubviews修复它。