WAPG4 解決透明導航欄返回黑塊
阿新 • • 發佈:2019-02-02
不做gif了,雖然我會做^ ^,具體情況你遇到了就知道我說的是什麼,沒遇到這篇文章對你也沒有價值。
具體來說就是,我APP中根檢視導航欄是透明的,二級頁面導航欄是不透明的,在頁面切換的時候會看到黑塊,這個在加入了手勢後更加明顯,總之就是頁面切換不平滑,這讓有強迫症的我怎麼看的舒服。
之前一直沒有很好的解決辦法,後來在看到《一個絲滑的全屏滑動返回手勢》後,裡面一句話提醒了我,是講手機QQ的頁面切換的,“它的個人中心頁面上面的 bar 是隱藏狀態,然後做了個和其他頁面很像的假 bar,但返回手勢一開始就露餡了,為了彌補,還做了下後面真 bar 的 alpha 值動畫,兩個返回按鈕還是重疊在了一起。”,於是,就有思路了,我在頁面出現的時候隱藏真正的NavigationBar,讓自己新增的假的NavigationBar佔坑,並配置透明,頁面結束的時候,設定真的NavigationBar顯示,這樣不影響二級頁面導航欄的顯示,幾處程式碼貼下
@property (weak, nonatomic) IBOutlet UINavigationBar *customNavigationBar; - (void)initCustomNavigationBar { self.customNavigationBar.translucent = YES; //去掉背景圖片 [self.customNavigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; //去掉底部線條 [self.customNavigationBar setShadowImage:[[UIImage alloc] init]]; //調整偏移inset,使得圖片能從螢幕頂部開始顯示,顯示在導航欄下面 self.automaticallyAdjustsScrollViewInsets = NO; }
//對導航欄隱藏的設定,避免子頁面缺失 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; } -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:animated]; }
大概就是這個樣子,真正是困擾自己很久了,這個問題
當然我也使用了文章作者的FDFullscreenPopGesture,這樣在每個介面都有了右滑返回的手勢,不用自己添加了,聽說是用了AOP,這個我不太懂,找時間看下,反正新增兩個檔案後就自帶了手勢(聽說用了私有API,到時候注意下)。
參考資料:
1.一個絲滑的全屏滑動返回手勢:http://blog.sunnyxx.com/2015/06/07/fullscreen-pop-gesture/