我正在使用UISplitViewController,并且在我的详细视图中,当垂直大小类更改为Compact时,我尝试使用willTransitionToTraitCollection:withTransitionCoordinator:
更改几个视图的可见性。
仅在iPhone上(不是iPhone Plus或iPad),如果将preferredDisplayMode
更改为UISplitViewControllerDisplayModePrimaryOverlay
,则第一次旋转设备时不会调用willTransitionToTraitCollection:withTransitionCoordinator:
,而会自动调用willTransitionToSize:withTransitionCoordinator:
。如果我将preferredDisplayMode
设置为其他任何值,它都可以正常工作。如果您在选择“主控”列表中的项目之前旋转设备,则它可以正常工作。仅在从肖像到风景的第一次旋转中。
使用Master-Detail模板可以很容易地复制它:
AppDelegate:
- (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:
,但在第一次转换时未调用willTransitionToTraitCollection:
。有人知道为什么是这样吗?我觉得这是一个错误,但我想在将错误报告发送到Apple的错误报告程序黑洞之前,先看看是否有人对它有所解释。
最佳答案
附带“这是一个错误”。
我已向Apple提交了错误报告,并为此创建了雷达:https://openradar.appspot.com/radar?id=5015544713445376
关于ios - UISplitViewController preferredDisplayMode为Overlay时,第一次更改时不会调用willTransitionToTraitCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39582112/