IOS 自定义表格单元格不会自动调整宽度以更改方向

Posted

技术标签:

【中文标题】IOS 自定义表格单元格不会自动调整宽度以更改方向【英文标题】:IOS Custom Table Cell does not Automatically Resize Width for Orientation Change 【发布时间】:2013-05-13 17:45:36 【问题描述】:

有一个自定义表格单元格,它有自己的 .XIB 和 .h 和 .m。没什么太花哨的。当设备旋转时,单元格宽度不会改变。索引路径的表格单元格被调用,但宽度没有变化(比如从纵向到横向)。什么会阻止这种情况?

不想手动设置帧大小。

如果需要,将发布代码,但也许我们可以在这个没有代码的情况下回答。

即使在横向启动应用程序也不会为单元格设置更大的宽度。

[加法]

也不适用于非自定义单元格。

self.tableViewSelection.autoresizesSubviews = true;
self.tableViewSelection.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.autoresizesSubviews = true;

表格的 XIB 的大小调整似乎设置正确(非 ios6 支持)。

【问题讨论】:

一些屏幕截图会很有帮助。在这里很难说出真正没有调整大小的地方。 我同意,但我现在对这个问题不再感兴趣。如果版主愿意,我们可以删除它。 【参考方案1】:

如果您要覆盖 layoutSubviews 或其他方法,请不要忘记将其称为 super:

override func layoutSubviews() 
    //...

    super.layoutSubviews()

不这样做会导致您面临的问题。

【讨论】:

你是个天才【参考方案2】:

单元格将自动与表格视图具有相同的宽度。所以没有调整大小的可能是表格视图。您需要给它适当的约束(如果使用 Autolayout,iOS 6 中的默认设置)或自动调整掩码(否则),以便它会调整大小以响应***视图调整大小以补偿设备旋转。

【讨论】:

是的,这是应该发生的。出于某种原因,在这个项目中它不是并且试图弄清楚。在没有运气的情况下尝试了上面的硬代码。我假设单元格的正确大小是由表格视图在(用于索引的单元格)之后和之前(将显示单元格)设置的。【参考方案3】:

我在旋转时自动调整自定义单元格时也遇到了同样的问题。战斗后,我得到了授权 cell.contentView 的解决方案,因为我将我的视图作为子视图添加到 cell.contentview 中。

我使用了以下代码,我的代码运行良好:)

cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

【讨论】:

你提到的是正确的,但自动调整掩码应该这样设置:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)。我也有你在代码中提到的同样的疑问,所以我在 SO 中发布了一个问题,你可以查看它以供参考:***.com/questions/7754851/… 从 Swift2 开始,此代码不再有效。所有这些常量最终都是未解析的标识符。【参考方案4】:

对于 swift 2,它将是:

cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

【讨论】:

【参考方案5】:

在 Swift 4 中,以下内容有效。

cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

注意: cellUIView 是我添加到原型单元的contentViewUIView

【讨论】:

以上是关于IOS 自定义表格单元格不会自动调整宽度以更改方向的主要内容,如果未能解决你的问题,请参考以下文章

iOS6 自动布局异常

iOS - 如何处理自定义表格单元格中的方向变化

自动调整 UITableViewCell:更改自定义单元格内视图的高度

自定义表格单元格未调整大小以适合内容视图

修复表格视图单元格中的文本,ios?

在自定义单元格中调整 iOS 7.1 中的 UILabel 大小