Swift NavigationBar隱藏后的右滑手勢效果
需求
我們在開發(fā)中經(jīng)常遇見這樣的需求,就是A視圖沒有導(dǎo)航,pushB視圖后導(dǎo)航欄。然后要求可以使用iOS的系統(tǒng)側(cè)滑返回功能。類似如下的功能:
問題
在處理這個需求的時候,我們一般會遇到兩個問題:
右滑返回手勢
ios開發(fā)中,使用push視圖,系統(tǒng)是有默認(rèn)的側(cè)滑返回上個視圖的功能。但是當(dāng)我們自定義導(dǎo)航欄時,這個手勢的事件就沒有再觸發(fā),此時只要我們重新將代理設(shè)置為controller即可。
代碼示例:
在BaseViewController中添加如下的代碼
//開啟 push視圖 右滑手勢() fileprivate func openSwipe(){ if(self.navigationController != nil){ self.navigationController!.interactivePopGestureRecognizer!.delegate = self; } } func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { if self.navigationController?.viewControllers.count == 1{ return false; } return true; }
或者在BaseNavigationController中添加如下代碼:
extension BaseNavigationController:UIGestureRecognizerDelegate{ override func viewDidLoad() { super.viewDidLoad() self.interactivePopGestureRecognizer?.delegate = self } func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { if self.navigationController?.viewControllers.count == 1{ return false; } return true; } }
右劃返回時導(dǎo)航欄的隱藏問題
oc代碼:
-(void)viewWillAppear:(BOOL)animated{ [self.navigationController setNavigationBarHidden:YES animated:true]; } -(void)viewWillDisappear:(BOOL)animated{ [self.navigationController setNavigationBarHidden:NO animated:false]; }
Swift代碼:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(false); self.navigationController?.setNavigationBarHidden(true, animated: true) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated); self.navigationController?.navigationBar.isHidden = false; }
注意點
我們隱藏導(dǎo)航欄的時候,務(wù)必使用animated為true.這樣在右劃返回視圖的時候才不會突兀,否則則會是下面的效果。剛開始滑動,導(dǎo)航欄就全不見了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Swift設(shè)置UILabel內(nèi)邊距的實例代碼
有時候,我們需要一個顯示文字,又想這些文字與邊界之間有自定義的邊距,所以下面這篇文章主要給大家介紹了關(guān)于Swift設(shè)置UILabel內(nèi)邊距的相關(guān)資料,需要的朋友可以參考下2021-10-10Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法
這篇文章主要介紹了Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05swift中c風(fēng)格的for循環(huán)執(zhí)行效率
這篇文章主要介紹了swift中c風(fēng)格的for循環(huán)執(zhí)行效率 的相關(guān)資料,需要的朋友可以參考下2016-07-07Swift項目中利用SWRevealViewController實現(xiàn)側(cè)滑菜單
這篇文章主要介紹了Swift項目中利用SWRevealViewController實現(xiàn)側(cè)滑菜單,需要的朋友可以參考下2015-12-12Swift使用WKWebView在iOS應(yīng)用中調(diào)用Web的方法詳解
這篇文章主要介紹了Swift使用WKWebView在iOS應(yīng)用中調(diào)用Web的方法詳解,使用WKWebView便等于使用和Safari中相同的JavaScript解釋器,用來替代過去的UIWebView,需要的朋友可以參考下2016-04-04