选项卡栏忽略 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
调用)。
我已经将 SFSafariViewController
和 UITabBarController
子类化,同时尝试尽可能调用上面的方法来停止标签栏默认设置 - 但是我没有成功。
注意:我在旋转时遇到“[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=]
我正在使用以下代码来欺骗我的应用程序,使其相信它是一个 iPad 并在选项卡栏上显示 6 个选项卡。
-(UITraitCollection *)traitCollection
{
UITraitCollection
*realTraits = [super traitCollection],
*lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}
这一切都很好,除了从 SFSafariViewController
返回时,我已经旋转了几次。我遇到的问题是标签栏默认返回并显示四个标签以及更多页面。我的问题是什么?重要的是要注意,仅打开 SFSafariViewController
然后返回不会触发选项卡栏默认设置 - 所以我假设它与将新视图放在顶部的旋转有关(该视图正在忽略 UITraitCollection
调用)。
我已经将 SFSafariViewController
和 UITabBarController
子类化,同时尝试尽可能调用上面的方法来停止标签栏默认设置 - 但是我没有成功。
注意:我在旋转时遇到“[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=]