在採用新的UISplitViewController
時,我試圖對使用UISplitViewControllerDisplayModeAutomatic
模式時發生的默認行爲進行更改。隱藏UISplitViewController中的縱向覆蓋
當以縱向方式工作時,我希望當用戶觸發到細節端時,主要覆蓋層會隱藏。默認情況下,疊加層保持在屏幕上,直到用戶在細節端輕擊爲止。
我使用與委託以下嘗試:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender
{
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
[UIView animateWithDuration:0.3 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}];
}
return NO;
}
這使我在肖像所期望的行爲,但是這打破橫向模式(這是我想表現得像個UISplitViewControllerDisplayModeAllVisible
)。如果您已經完成推動,然後旋轉設備,則左側仍然隱藏(如預期的那樣)。我無法找到一個appriprite位置來重新設置旋轉的首選模式以顯示左側(因爲trait集合不能用於在iPad上告訴橫向vs縱向)。
如何手動觸發解除覆蓋?
杜佩注:iOS8上改變UISplitViewController
完全,所以六月'14之前的所有其他SO答案都可能是錯的(我已經挖過很多人,只是櫃面)
很簡單的答案。我發現0.3的持續時間比用動作或按鈕切入或切出時的動畫慢一點; 0.2秒似乎是正確的。 – Nick 2014-11-09 09:12:43
這工作很好,但如果主視圖顯示設備旋轉到橫向時,詳細視圖不會適當調整大小。 – Leon 2015-07-02 19:05:18