我使用下面的代码来欺骗我的应用程序,使其相信它是一个iPad,并在选项卡条上显示了6个选项卡。
-(UITraitCollection *)traitCollection
{
UITraitCollection
*realTraits = [super traitCollection],
*lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}这一切都很好,除了当我从一个SFSafariViewController返回时,我已经旋转了几次。我遇到的问题是,选项卡栏默认返回,并显示四个选项卡和更多的页面。我有什么问题?重要的是要注意的是,仅仅打开SFSafariViewController然后返回并不会触发默认的Tab所以我假设它与旋转有关,在顶部放置一个新的视图(一个忽略UITraitCollection调用的视图)。
我对SFSafariViewController和UITabBarController进行了子类化,并试图在可能的情况下调用上面的方法来停止Tab的默认设置--但是我没有成功。
注意:我得到了一个,'[App] if we're in the real pre-commit handler we can't actually add any new fences due to CA restriction‘错误时旋转-如果这是有帮助的。
谢谢。
发布于 2017-08-22 06:47:07
最后,我将下面的代码片段实现到我的suclassed UINavigationController中,从而解决了这个问题。
- (UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController
{
return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
}希望这能帮助别人解决这个问题!
https://stackoverflow.com/questions/45604783
复制相似问题