2016-09-19 32 views
1

我正在使用UISplitViewController,并且在我的详细视图中,我尝试使用willTransitionToTraitCollection:withTransitionCoordinator:更改垂直尺寸类更改为Compact时情侣视图的可见性。当UISplitViewController preferredDisplayMode覆盖时,首先不会调用willTransitionToTraitCollection

仅在iPhone(不是iPhone加或iPad)如果我改变preferredDisplayModeUISplitViewControllerDisplayModePrimaryOverlaywillTransitionToTraitCollection: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,添加viewWillTransitionToTraitCollectionviewWillTransitionToSize实现和设置断点:

- (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记者黑洞发送一个错误报告。

回答

-1

setPreferredDisplayMode使各方面的意见负荷,所以你应该最后调用它。

+0

事实并非如此。 iPhone在横向上只有宽度和高度紧凑,但宽度和高度均为纵向,所以在每次旋转设备时都应调用willTransitionToTraitCollection。此外,如果是这种情况,这将永远不会被称为(如在iPad上),但是在第一次设备旋转后,每次设备轮换时都会调用它,而这只发生在我最初描述的情况中。 –

+0

@JordanBondo你可以看看我更新的答案 – malhal