UINavigationBar change Tint color with animation

后端 未结 3 1979
梦毁少年i
梦毁少年i 2021-02-04 18:13

Is it possible to change the tint with animation for a smoother effect?

This doesn\'t work for me:

[UIView beginAnimations:nil context:nil];
[self.naviga         


        
3条回答
  •  有刺的猬
    2021-02-04 18:40

    You wouldn't believe the length I went through to actually make that possible; it annoyed me to no end that this isn't a stock iOS feature and that transition of tintColor look ugly while the animation to push/pop a viewController is so smooth.

    There'a lot of code that checks when to fade, and I've even written a class called PSPDFNavigationAppearanceSnapshot to preserve the navigation state when being popped. (I got that idea from the awesome NimbusKit)

    The actual animation is pretty easy:

    [self.navigationController.navigationBar.layer addAnimation:PSPDFFadeTransition() forKey:nil];
    
    CATransition *PSPDFFadeTransition(void) {
        return PSPDFFadeTransitionWithDuration(0.25f);
    }
    
    CATransition *PSPDFFadeTransitionWithDuration(CGFloat duration) {
        CATransition *transition = [CATransition animation];
        transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        transition.type = kCATransitionFade;
        transition.duration = duration;
        return transition;
    }
    

    You can compact that code even more; it's a snipped from my iOS PDF library PSPDFKit and I use the fade in various places, thus the helper functions.

提交回复
热议问题