我已經沖刷的StackOverflow(和互聯網)的解決這個問題。這個問題已被多次提出,但正如你所指出的那樣,從來沒有得到充分的回答。如果不重要的話,許多solutions都給出了可接受的解決方案,例如下部工具欄是否捲起。
Others提供了一個解決方案,使用UIView
動畫/ CoreAnimation而不是UIModalTransitionStylePartialCurl
作爲模式轉換樣式;這最壞的情況是App Store中不允許的解決方案,最多與UIModalTransitionStylePartialCurl
(例如,捲曲的形狀不同)獲得的效果不盡相同。
這些解決方案都沒有提供模擬蘋果在地圖應用程序中的解決方案(即使用UIModalTransitionStylePartialCurl
,但在屏幕底部留下不捲曲的UIToolbar
)的答案。
我會繼續在這個傳統不完整的答案,因爲你問一個UITabBarController
和我的解決方案沒有具體解決這種情況。但是,它確實解決了我的問題,即用底部的未捲曲工具欄捲起半頁捲曲。
必須有一個更優雅的方式來做到這一點,但我這是怎麼管理的。
我的AppDelegate
的rootViewController
是UIViewController
的一個子類,我將其稱爲TAContainerViewController
。 TAContainerViewController
管理一個)屏幕(以下簡稱「東東捲曲」),TAContentViewController
和實際內容B)的內容「後面」 TAContentViewController
(例如設置),我會打電話給TAUnderCurlViewController
。
我的TAContainerViewController
的實例的屬性爲TAContentViewController
和TAUnderCurlViewController
。這是我內容的UIView
是TAContentViewController
的view
屬性的子視圖;同樣地,用戶在捲曲下看到的是TAUnderCurlViewController
的view
特性。
在TAContainerViewController
的init
方法我一定要做到以下幾點:
_underCurlVC.modalTransitionStyle = UIModalTransitionStylePartialCurl;
而捲曲的內容頁面下透露,我設置調用此代碼的作用:
[self.contentVC presentModalViewController:self.underCurlVC animated:YES];`
其中self
是TAContainerViewController
,contentVC
是TAContentViewController
一個實例,underCurlVC
是TAUnderCurlViewController
一個實例。
要解散視圖,只需[self.contentVC dismissModalViewControllerAnimated:YES];
。
當模態視圖關閉時,contentVC
的框架似乎會出現一些奇怪的現象,所以我在模態視圖關閉時手動重置框架。
我已經發布了一個樣例項目,其詳細信息在Github。希望有人可以把它變成一個稍微更優雅的解決方案,或者擴展它以使用UINavigationController
或UITabBarController
。我認爲訣竅是將視圖控制器從Cocoa子類中明確定義的關係中拉出來,所以也許子類化這些專業的視圖控制器就可以做到這一點。
FYI以上init方法僅僅是一個靜態的便捷方法,它確實分配等 – danhopwood