我正在使用UISplitViewController,并且在我的详细视图中,我尝试使用willTransitionToTraitCollection:withTransitionCoordinator:
更改垂直尺寸类更改为Compact时情侣视图的可见性。当UISplitViewController preferredDisplayMode覆盖时,首先不会调用willTransitionToTraitCollection
仅在iPhone(不是iPhone加或iPad)如果我改变preferredDisplayMode
到UISplitViewControllerDisplayModePrimaryOverlay
,willTransitionToTraitCollection:withTransitionCoordinator:
不叫设备第一次旋转,但willTransitionToSize:withTransitionCoordinator:
是。如果我将preferredDisplayMode
设置为其他任何内容,它都可以正常工作。如果您在选择主列表中的项目之前旋转设备,则它工作得很好。这只是从肖像到风景的第一次旋转。
的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:
未被调用用于第一个tra nsition。
有谁知道这是为什么?我觉得这是一个错误,但我想看看有没有人给我一个解释,然后再向苹果的bug记者黑洞发送一个错误报告。
事实并非如此。 iPhone在横向上只有宽度和高度紧凑,但宽度和高度均为纵向,所以在每次旋转设备时都应调用willTransitionToTraitCollection。此外,如果是这种情况,这将永远不会被称为(如在iPad上),但是在第一次设备旋转后,每次设备轮换时都会调用它,而这只发生在我最初描述的情况中。 –
@JordanBondo你可以看看我更新的答案 – malhal