Navigationbar在兩種類(lèi)型的界面之間進(jìn)行屏幕邊緣拖動(dòng)時(shí),對(duì)navigationbar顯示的控制

問(wèn)題描述:

  • (1) 有兩個(gè)界面,RootUI 和 SubUI;
  • (2) RootUI需要顯示Navigationbar, 而SubUI不顯示Navigationbar;
  • (3) 要進(jìn)行的操作是:在SubUI中進(jìn)行屏幕邊緣拖拽操作,希望能夠按照如下圖所示的方式進(jìn)行顯示:
B83CEEF6-5C88-40C7-B157-EDACA4447AEA.png

實(shí)現(xiàn)思路:

  • 在 RootUI 界面的viewDidLoad方法中添加以下代碼:
//業(yè)務(wù)界面的繪制區(qū)域不會(huì)向上超越navigationbar的區(qū)域,如果超越了的話,在向下滾動(dòng)界面時(shí),navigationbar的背景色同業(yè)務(wù)界面的色調(diào)有輕微的融合;
self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
/*
相當(dāng)于給navigationbar賦值一個(gè)背景色,
這樣做的好處是:防止UINavigationController在做兩個(gè)界面之間的邊緣拖拽切換時(shí),顯示一些不必要的自動(dòng)補(bǔ)全的動(dòng)畫(huà)效果。
*/
self.navigationController.view.backgroundColor = COLOR_THEME;
  • 在被push出來(lái)的SubUI界面中添加以下代碼:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
//強(qiáng)行往navigationbar的背景上設(shè)置一張alpha=0的透明顏色的圖片,這樣SubUI界面的navigationbar就被透明了
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[COLOR_THEME colorWithAlphaComponent:0]] forBarMetrics:UIBarMetricsDefault];

//隱藏navigationbar底部的分割線
    UIImageView *navBarHairlineImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];
navBarHairlineImageView.hidden = YES;
        self.navigationController.navigationBar.translucent = YES;
}

//找到navigationbar底部的分割線
- (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
    if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
        return (UIImageView *)view;
    }
    for (UIView *subview in view.subviews) {
        UIImageView *imageView = [self findHairlineImageViewUnder:subview];
        if (imageView) {
            return imageView;
        }
    }
    return nil;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容