Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can I animate the UINavigationBar background change on UIViewController push?

My app uses two different backgrounds for the UINavigationBar to indicate to the user what level in the hierarchy they're at. When I push a UIViewController that needs the second background it lacks animation, the background changes immediately as soon as the UIViewController is pushed. How can I animate this so that the background change fades as the view is being changed?

like image 859
bpercevic Avatar asked May 30 '12 19:05

bpercevic


1 Answers

I know this is an old thread, but this worked for me:

CATransition *transition = [CATransition animation];
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
transition.type = kCATransitionFade;
transition.duration = 0.5;

[self.navigationController.navigationBar.layer addAnimation:transition forKey:nil];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage imageNamed:@"navigationbar.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(44, 20, 44, 20)] forBarMetrics:UIBarMetricsDefault];        

Place this inside your viewDidLoad method. You'll need to link/import the QuartzCore framework.

like image 52
sooper Avatar answered Nov 04 '22 06:11

sooper