回答
可以達到所需的與下面的步驟 -
1)創建的UINavigationController
擴展如。 UINavigationControllerWithCurtain
。
2)覆蓋initWithCoder
如果你正在構建導航用XIB1否則initWithRootController
和超過navigationcontroller's
視圖即self.view
本身在構造函數中添加幕的自定義視圖。
3)你需要重寫pushViewController
方法,以便在頂部設置自定義視圖幕最層,添加以下 -
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[super viewController:viewController animated:animated];
[self.view bringSubviewToFront:customCurtainView];
}
- 創建自定義
UIView
(姑且稱之爲curtainView
) 。 - 無論您打算如何使用您的視圖(
initWithCoder:
,如果它們是從XIB或StoryBoard加載的),請將代碼創建爲'curtain'子視圖。 - 在此自定義
curtainView
類中,添加用於引用窗簾子視圖的屬性。 - 使
curtainView
的所有UIView
s(不是UIViewController
s)的子類。 - Voila!
這意味着你將有許多不同的'CurtainView'實例,每個視圖控制器都有一個實例。例如,如果將控制器推到導航堆棧上,則會有一個「CurtainView」滑塊放置到另一個之上。我不確定這是OP尋找的效果 - 他可能更喜歡有一個無所不在的視圖實例。 – Caleb
只需將添加到您的應用程序的關鍵窗口。這將覆蓋一切。
[[[UIApplication sharedApplication] keyWindow] addSubview:curtainView];
我用這個方法來呈現全屏幕進度指示器覆蓋(一個單實際上)在一些活動中阻止用戶界面,而不管上下文的。
請注意,它是一個UIWindow沒有界面的方向,它總是與設備對齊,所以旋轉UI是值得你必須處理,如果要這樣(這實際上表明,這是不是最好的設計)。
我認爲獲得所需效果的最佳方法是create your own custom container view controller。這可讓您將其他視圖控制器作爲自定義視圖控制器的子項託管,因此您可以隨時在屏幕上顯示一個「幕」,即使它下面的內容發生更改。
一些優勢,相比其他解決方案的自定義視圖控制器是:
- 簡潔的設計:沒有在應用程序中的其他視圖或視圖控制器需要擔心的帷幕
- 單個實例:大幕將在視圖控制器過渡留在原地
- 幹:似乎適合很好地與「不重複自己」的理念
- 1. 如何實現這種觀點的iPhone
- 2. 如何實現這種觀點
- 3. 我怎樣才能達到這種觀點?(在列表視圖)
- 4. 我試圖從UITableViewCell的數據傳遞到彈出觀點,我使用這個代碼在彈出視圖
- 5. Rediecting在笨從一個視圖另一種觀點認爲
- 6. 使價值出現在圖表上的每個數據點上
- 7. 爲每個視圖添加觀察者或動態地呈現視圖
- 8. 點擊縮略圖生成Instagram外觀後應該使用哪個Three20視圖?
- 9. WPF「EditItem」不允許這種觀點
- 10. 我該如何改變這種觀點?
- 11. 如何使兩種觀點
- 12. 調用oneview另一種觀點認爲在骨幹JS的觀點並沒有出現
- 13. 如何使用一個控制器兩種觀點在笨
- 14. tableView.reloadData()每次出現視圖時
- 15. 找出的有一種觀點
- 16. 如何寫這個觀點
- 17. Drupal 7 - 使用視圖顯示每個節點在各個地圖中的每個節點的KML
- 18. 從一個視圖傳遞一個UIPanGestureRecognizer要通過另一種觀點認爲
- 19. 如何從另一種觀點的點擊在同一視圖父
- 20. 我應該使用哪種視圖?
- 21. 在視圖中實現觀察器(Java)
- 22. iphone;只有在視圖出現之後才做東西..觀看會出現嗎?
- 23. 使用ViewAnimator滑出丟棄的舊觀點和幻燈片在新視圖
- 24. 的Rails:提交從視圖局部變量另一種觀點
- 25. 觀的繼承不呈現兩種觀點
- 26. 這是哪種視圖? - IOS5
- 27. 多NativeScript列表視圖每個應用
- 28. 應用樣式每個孩子視圖
- 29. 我試圖使我與jQuery視圖中的部分觀點,但局部視圖這麼想的的部分出現在運行時
- 30. 如何將一種觀點推向另一種觀點?
我可能會擴展一個'UIView'並擴展該視圖的所有其他視圖。 – Rob