天天看點

導航欄a中跳轉到自定義樣式導航欄b

系統導航欄a中跳轉到自定義樣式導航欄b,再由b傳回a時,a的樣式變成了b的自定義樣式?

方法1:在a視圖即将顯示時,再次設定其導航欄樣式,進而避免被b樣式覆寫。

方法2:在視圖b中,視圖即将顯示為設定新樣式;視圖即将消失時取消新樣式,即設定回a視圖樣式。如下代碼:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    // 自定義導航欄樣式
    UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
    //1-1 設定導航欄背景色
    self.navBgImage = [UIImage imageNamed:@"xxx1.png"];
    if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
    {
        [FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
    }
    //1-2 導航欄底端下劃線
    self.navButtomline = InsertView(FTicketNavBar, CGRectMake(0.0, FTicketNavBar.frameHeight - 1.0, FTicketNavBar.frameWidth, 1.0));
    navButtomline.backgroundColor = FTMainTypeColor;
}
           
- (void)viewWillDisappear:(BOOL)animated
{
    // 設定回上層視圖樣式
    UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
    //1-1 設定導航欄背景色
    self.navBgImage = [UIImage imageNamed:@"xxx2.png"];
    if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
    {
        [FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
    }
    //1-2 導航欄底端下劃線
    [self.navButtomline removeFromSuperview];
    self.navButtomline = nil;
}