【问题标题】:UITableViewCell subclass layout messed up in autoLayout-disabled StoryboardUITableViewCell 子类布局在禁用自动布局的故事板中搞砸了
【发布时间】: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 版本有关,为什么不提一下呢?您并没有真正解释视图是如何混乱的。您没有提供单元格在故事板中的外观与运行时的外观的图片。我的意思是,这里什么都没有。没有什么可以重现问题。
  • 添加了图片,但基本上都已经描述过了。
  • 我能看到的唯一问题是 > 在左边而不是右边。对吗?

标签: ios objective-c uitableview autolayout


【解决方案1】:

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

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

因此避免执行 super 的 layoutSubviews 修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多