5

我有一个UITabBar必须具有紧凑的horizo​​ntalSizeClass 的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])
}

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

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

检查 Apple 文档后,我确实找到了一个 API,overrideTraitCollection(forChild:) 但是包含我的 UITabBar 的 viewController 需要有常规的 Horizo​​ntalSizeClass。

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

我不想覆盖 a 的 traitCollectionUIViewController而只是覆盖UIView.

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

4

0 回答 0