覆盖 UIView 的 UITraitCollection

FE_*_*ech 5 uitabbar ios swift uitraitcollection

我有一个UITabBar必须有一个具有紧凑水平尺寸类的 traitCollection。因为在常规的 horizo​​ntalSizeClass 上,UITabBar并排呈现 TabBarIcon 和 Title。

我做了子类UITabBar并覆盖了 traitCollection getter 来给我修改后的 traitCollection。

override var traitCollection: UITraitCollection{
    let current = super.traitCollection
    let compact = UITraitCollection(horizontalSizeClass: .compact)
    return UITraitCollection(traitsFrom: [current, compact])
}
Run Code Online (Sandbox Code Playgroud)

这可以完成工作,但是,我开始低于警告

MyTabBar 类覆盖了不支持的 -traitCollection getter。如果您尝试覆盖特征,则必须使用适当的 API。

在查看 Apple 文档后,我确实找到了一个 API,overrideTraitCollection(forChild:) 但是保存我的 UITabBar 的 viewController 需要有常规的 horizo​​ntalSizeClass。

我也发现了一个类似的问题,但它没有回答我覆盖 a 的 traitCollection 的问题UIView

我不希望覆盖的的traitCollectionUIViewController但只有UIView

覆盖 a 的 traitCollection 的正确方法是UIView什么?