【发布时间】:2015-08-13 20:10:15
【问题描述】:
我有一个视图控制器。基本上,我想检查一些条件,如果这些条件为真,我想手动设置它的尺寸等级(覆盖它的默认尺寸等级)。
为此,我必须覆盖它的 UITraitCollection。我做了一些研究,并且能够找到这个功能:
setOverrideTraitCollection(collection: UITraitCollection!, forChildViewController childViewController: UIViewController!)
该函数允许我覆盖子视图控制器的特征集合,但我希望视图控制器能够覆盖它自己的特征。
所以回顾一下,我想做以下事情。当视图控制器加载时,我希望它检查一些条件。如果它们是真的,我希望视图控制器将其大小类覆盖为自定义类。
感谢您的帮助!
【问题讨论】:
-
在此处查看建议的答案:stackoverflow.com/questions/27735341/…
-
Apple 的做法如下:github.com/sugarso/WWDC/blob/master/WWDC/… :)
-
@RoryMcKinnel 谢谢!我仍然很困惑。您的回答谈到了表格视图和单元格,我不确定这与大小类有何关系。您确实提到 traitCollection 可以在 iOS 8 中访问,但它是只读属性。抱歉,我对 iOS 编程完全陌生,所以你的回答有点过头了。
-
@sloik 谢谢!我看了看,似乎他们正在
updateForcedTraitCollection中设置特征属性。但是,由于某种原因,他们没有为视图本身设置属性,而是为名为“viewController”的子项设置了它。我不确定他们为什么要这样做。我想更新视图本身的大小类,而不是子视图。 -
接受的答案建议覆盖
traitCollection属性的getter。traitCollection包含系统使用的尺寸等级信息。如果你为你的 UIViewController 覆盖它,那么系统将使用你返回的 sizeclass 而不是它的默认值。至少这是理论。
标签: ios cocoa user-interface