我正在使用UISplitViewController,在我的详细视图中,当垂直大小类更改为Compact时,我尝试使用willTransitionToTraitCollection:withTransitionCoordinator:
来更改几个视图的可见性。
仅在iPhone上(不是iPhone Plus或iPad)如果我将preferredDisplayMode
更改为UISplitViewControllerDisplayModePrimaryOverlay
,则第一次旋转设备时不会调用willTransitionToTraitCollection:withTransitionCoordinator:
,{{1是的。如果我将willTransitionToSize:withTransitionCoordinator:
设置为其他任何内容,那就可以了。如果在选择主列表中的项目之前旋转设备,它可以正常工作。它只能在从纵向到横向的第一次旋转中。
使用Master-Detail模板可以轻松复制:
的AppDelegate:
preferredDisplayMode
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
// ******** Add this ********
[splitViewController setPreferredDisplayMode:UISplitViewControllerDisplayModePrimaryOverlay];
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
splitViewController.delegate = self;
return YES;
}
中,添加DetailViewController
和viewWillTransitionToTraitCollection
实施并设置断点:
viewWillTransitionToSize
您会看到始终调用- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
,但第一次转换不会调用willTransitionToSize:
。
有谁知道这是为什么?我觉得这是一个错误,但我想看看是否有人在向Apple的bug报告黑洞发送错误报告之前有解释。
答案 0 :(得分:0)
选择“这是一个错误”。
我已向Apple提交了一份错误报告,并为其创建了一个雷达:https://openradar.appspot.com/radar?id=5015544713445376
答案 1 :(得分:-1)
setPreferredDisplayMode会加载所有视图,因此您应该最后调用它。