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
是我添加到原型单元的contentView
的UIView
。
【讨论】:
以上是关于IOS 自定义表格单元格不会自动调整宽度以更改方向的主要内容,如果未能解决你的问题,请参考以下文章