iOS 7 UINavigationController NavBar per controller color animation

后端 未结 1 832
别跟我提以往
别跟我提以往 2020-12-09 14:03

Is there any way to have different barTintColor of UINavigationController\'s UINavigationBar on different pushed controllers w

相关标签:
1条回答
  • 2020-12-09 14:36

    You can get this by using UIViewControllerTransitionCoordinator.

    1. Copy the example code to the AController and customize the colors.
    2. Copy the example code to the BController and customize the colors.
    3. That's it! During UINavigationController's push/pop transition, the AController's style will smoothly fade in/out to BController's style.

    Example code:

    -(void) viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
    
        [[self transitionCoordinator] animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
            self.navigationController.navigationBar.translucent = NO;
            self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    
            // text color
            [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
    
            // navigation items and bar button items color
            self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    
            // background color
            self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
        } completion:nil];
    }
    
    0 讨论(0)
提交回复
热议问题