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-10
Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法
這篇文章主要介紹了Swift 使用 Observe 監(jiān)測頁面滾動的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
swift中c風(fēng)格的for循環(huán)執(zhí)行效率
這篇文章主要介紹了swift中c風(fēng)格的for循環(huán)執(zhí)行效率 的相關(guān)資料,需要的朋友可以參考下2016-07-07
Swift項目中利用SWRevealViewController實現(xiàn)側(cè)滑菜單
這篇文章主要介紹了Swift項目中利用SWRevealViewController實現(xiàn)側(cè)滑菜單,需要的朋友可以參考下2015-12-12
Swift使用WKWebView在iOS應(yīng)用中調(diào)用Web的方法詳解
這篇文章主要介紹了Swift使用WKWebView在iOS應(yīng)用中調(diào)用Web的方法詳解,使用WKWebView便等于使用和Safari中相同的JavaScript解釋器,用來替代過去的UIWebView,需要的朋友可以參考下2016-04-04

