簡體   English   中英

iOS - 僅為部分自定義導航欄 UIViewController

[英]iOS - Customize Navigation Bar for only some UIViewController

我必須向現有應用程序添加新屏幕,該應用程序將使用與已經存在的導航欄樣式不同的導航欄樣式,並且可以從不同的屏幕訪問。 想法是只為這些屏幕顯示新的導航欄樣式,因此當用戶完成該流程或返回開始導航的屏幕時,它應該再次顯示它之前使用的導航欄樣式。

我嘗試了兩件事,但沒有按預期工作:

  1. 我想把新屏幕包裝在一個新的UINavigationController中,這樣我就可以改變它的導航欄樣式,它對於新屏幕來說是一致的。 It works but the problem is that I am not able to customize the initial UINavigationController transition to make it not look like a modal (ie I want to show that UINavigationController with the same animation as if I were pushing a UIViewController ). 有沒有辦法做到這一點? 順便說一句,我正在使用故事板 segues 管理導航。

  2. 我也想過用

self.navigationController?.navigationBar.isHidden = true

但看起來並不干凈,因為當流程完成(有點長)或取消時,我必須再次顯示它。 這產生了很多組合,很容易錯過其中一個,所以這似乎不是一個實際的解決方案。 有一個更好的方法嗎?

presenting view controller是您要更改要呈現的 controller 的導航欄的位置。 因此,您可以在調用push(viewController:animated:)之前對導航欄進行任何更改。

然后在仍然presenting view controllerviewWillAppear中,您將導航欄重置為最初的樣子。

注意:請記住,根據您對導航欄所做的更改類型,轉換可能不再平滑。 用戶可能會在導航欄上看到一些閃爍,這將是糟糕的 UI/UX。

編輯:另一種選擇

或者,您可以擺脫導航欄,而是實現自己的header view ,您可以根據需要設置樣式來表示導航欄。

  • 您可以將其設置為帶有標題 + 后退按鈕的簡單導航欄。
  • 您可以將其設置為看起來像帶有大標題的導航欄
  • 您可以將其設置為帶有后退按鈕 + 背景圖像 + 標題 + 右欄按鈕的導航欄

如您所見,第二種選擇為您提供了更多的自由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM