选项卡栏忽略 UITraitCollection 请求 - 需要 6 个选项卡

Tab Bar Ignoring UITraitCollection requests - 6 Tabs Desired

我正在使用以下代码来欺骗我的应用程序,使其相信它是一个 iPad 并在选项卡栏上显示 6 个选项卡。

-(UITraitCollection *)traitCollection
{
    UITraitCollection
    *realTraits = [super traitCollection],
    *lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
    return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}

这一切都很好,除了从 SFSafariViewController 返回时,我已经旋转了几次。我遇到的问题是标签栏默认返回并显示四个标签以及更多页面。我的问题是什么?重要的是要注意,仅打开 SFSafariViewController 然后返回不会触发选项卡栏默认设置 - 所以我假设它与将新视图放在顶部的旋转有关(该视图正在忽略 UITraitCollection 调用)。

我已经将 SFSafariViewControllerUITabBarController 子类化,同时尝试尽可能调用上面的方法来停止标签栏默认设置 - 但是我没有成功。

注意:我在旋转时遇到“[App] if we're in the real pre-commit handler we can't actually add any new fences due to CA restriction”错误 - 如果这有任何帮助的话。

谢谢。

我最终通过在我的子类 UINavigationController 中实现下面的代码片段来解决这个问题。

- (UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController
{
    return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
}

希望能帮助其他人解决问题![​​=12=]