[英]iOS - Customize Navigation Bar for only some UIViewController
我必須向現有應用程序添加新屏幕,該應用程序將使用與已經存在的導航欄樣式不同的導航欄樣式,並且可以從不同的屏幕訪問。 想法是只為這些屏幕顯示新的導航欄樣式,因此當用戶完成該流程或返回開始導航的屏幕時,它應該再次顯示它之前使用的導航欄樣式。
我嘗試了兩件事,但沒有按預期工作:
我想把新屏幕包裝在一個新的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 管理導航。
我也想過用
self.navigationController?.navigationBar.isHidden = true
但看起來並不干凈,因為當流程完成(有點長)或取消時,我必須再次顯示它。 這產生了很多組合,很容易錯過其中一個,所以這似乎不是一個實際的解決方案。 有一個更好的方法嗎?
presenting view controller
是您要更改要呈現的 controller 的導航欄的位置。 因此,您可以在調用push(viewController:animated:)
之前對導航欄進行任何更改。
然后在仍然presenting view controller
的viewWillAppear
中,您將導航欄重置為最初的樣子。
注意:請記住,根據您對導航欄所做的更改類型,轉換可能不再平滑。 用戶可能會在導航欄上看到一些閃爍,這將是糟糕的 UI/UX。
編輯:另一種選擇
或者,您可以擺脫導航欄,而是實現自己的header view
,您可以根據需要設置樣式來表示導航欄。
如您所見,第二種選擇為您提供了更多的自由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.