2016-09-19 44 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