2015-12-04 126 views
0

我有一個應用程序,我想啓用拆分視圖。 iPhone和iPad(緊湊型和普通寬度)UI略有不同。iOS 9拆分視圖應用調整大小策略

在緊湊寬度模式下,我有一個帶有用戶可以選擇的項目列表的UITableView,當他們這樣做時,我將新的View Controller推送到導航堆棧上。但是,在常規寬度中,UITableView列表顯示在左側,然後我有一些其他視圖(右側沒有在UISplitViewController中實現)。所以我在2個不同的ViewController類中實現了這2個不同的屏幕。

如果我的用戶使用普通寬度的iPad,然後用我的應用程序輸入分割視圖並導致應用程序更改爲緊湊寬度,則需要更改向用戶顯示的ViewController。什麼是最好的策略?

注:我沒有使用故事板。

謝謝!

+1

聽起來就像'UISplitViewController'的導航類型是爲了處理 – dan

回答

0

我有兩種方法可以看到解決方案。一,你可以看看UISplitViewControllerDelegate,特別是摺疊和擴展接口部分。

另一種解決方案是覆蓋您的尺寸集合,以便iPhone和iPad上的顯示效果相同,因爲在無任何摺疊和展開的情況下,這兩個視圖總是「在那裏」。您可以將分割視圖控制器的preferredDisplayMode設置爲Overlay,這在iPhone上看起來不錯。所有你需要做的就是添加

UITraitCollection* horizTrait = [UITraitCollection 
           traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular]; 
UITraitCollection* vertTrait = [UITraitCollection 
           traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular]; 
UITraitCollection* childTraits = [UITraitCollection 
            traitCollectionWithTraitsFromCollections:@[horizTrait, vertTrait]]; 

[self setOverrideTraitCollection:childTraits forChildViewController:self.childViewControllers[0]]; 

父類的UISplitViewController(如果沒有父類,則必須創建一個本可以只是一個簡單的導航控制器)。

編輯的:我應該提及的是,上面的代碼簡單地將設備的特徵設置爲所有設備的常規規則。

0

感謝您的回覆。我想也許我應該使用狀態恢復,但是根據我的特徵集合恢復不同的視圖控制器。

相反,我想我只是創建一個視圖控制器容器,然後在willLayoutSubviews中,我將根據當前視圖的特徵集合決定顯示哪些視圖控制器。

謝謝!