UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了
Posted
技术标签:
【中文标题】UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了【英文标题】:UITableViewCell subclass layout messed up in autoLayout-disabled Storyboard 【发布时间】:2014-02-18 02:03:37 【问题描述】:我在 Storyboard 中创建了一个表格视图,其中的原型单元格在 Xcode 5 中未选中“使用自动布局”。
单元格是UITableViewCell的子类,主要是添加IBOutlets,里面没有代码。结果是混乱的布局。我尝试更改 Autoresizing 蒙版,但没有成功。也试过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
禁用自动布局的故事板:
不使用上述layoutSubviews
修复时的结果:
编辑 2:
单元格设置为不自动调整子视图大小。 虽然以上内容足以防止子视图自动调整,但所有自动调整大小的蒙版都设置为仅灵活的右边距和下边距。 只有 > 标记设置为灵活左边距。没有灵活的宽度或高度。【问题讨论】:
这个问题有点无意义。我从来没有遇到过 UITableViewCell 子类和布局的任何问题,所以我无法猜测你的问题是什么。你对你所做的事情的细节很少,所以我不可能重现这个问题。 没有太多细节,因为正如我所说的子类代码是空的,所以没有必要发布。如果您阅读链接中的问题,您会发现 UITableView 单元格在不同的 ios 版本中有许多怪癖。在我的情况下,即使在 IB 中未选中 autoLayout,它似乎也处于活动状态。 如果您认为问题与 iOS 版本有关,为什么不提一下呢?您并没有真正解释视图是如何混乱的。您没有提供单元格在故事板中的外观与运行时的外观的图片。我的意思是,这里什么都没有。没有什么可以重现问题。 添加了图片,但基本上都已经描述过了。 我能看到的唯一问题是 > 在左边而不是右边。对吗? 【参考方案1】:单元格正在被未记录的 UITableViewCell 的 layoutSubviews
修改:
backgroundView
框架。
尽管被配置为自定义样式单元格,它也会将imageView
(“>”)向左移动。
因此避免执行 super 的 layoutSubviews
修复它。
【讨论】:
以上是关于UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了的主要内容,如果未能解决你的问题,请参考以下文章
出队的 UITableViewCell 在滚动之前布局不正确(使用自动布局)
滚动时 UITableViewCell 自动布局抖动的动态单元格高度问题
如何在自动布局中使用 UITableViewCell 的动态高度并在底部视图隐藏时将其他视图向上移动?