标签栏忽略UITraitCollection请求 - 所需的6个标签

时间:2017-08-10 04:56:44

标签: rotation uitabbarcontroller uitabbar sfsafariviewcontroller uitraitcollection

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

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

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

我最终通过将下面的代码段实现到我的成功UINavigationController来解决这个问题。

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

希望帮助其他人解决问题!