How can I change the background image for my NavigationBar on a per page basis?

后端 未结 5 1514
广开言路
广开言路 2020-12-29 00:38

I\'ve been looking around for a way to change the background image of my NavigationBar and control the appearance of my NavigationBar as the user n

相关标签:
5条回答
  • 2020-12-29 00:54

    I believe this to be the first actual answer to this for iOS5, the main problem being the "removal" of the background image once you are done. Well, just retain the existing image and put it back when you are done.

    @implementation MyViewController {
        UIImage *_defaultImage;
    }
    
    - (void)viewWillAppear:(BOOL)animated {   
        _defaultImage = [self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"bar.png"] forBarMetrics:UIBarMetricsDefault];
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [self.navigationController.navigationBar setBackgroundImage:_defaultImage forBarMetrics:UIBarMetricsDefault];
    }
    
    0 讨论(0)
  • 2020-12-29 00:59

    You can use this code any where in your application(Call the method in viewWillAppeare:) by calling the method to change the navigation bar image. If You call the method in didFinishLanch means the navigation bar image is set to the whole app.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      [[UIDevice currentDevice] systemVersion];
        if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9)
        {
            [self customizeAppearance];
        }
    
    }
    
    - (void)customizeAppearance
    {
        UIImage *navbarimage = [[UIImage imageNamed:@"blckapplication_bar.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0,0,0)];
        [[UINavigationBar appearance] setBackgroundImage:navbarimage forBarMetrics:UIBarMetricsDefault];
    
        // Create resizable images    
        // Set the background image for *all* UINavigationBars
    }
    
    0 讨论(0)
  • 2020-12-29 01:01

    I'd really recommend reading a tutorial from Sebastian Celis, it really helped me - http://sebastiancelis.com/2009/12/21/adding-background-image-uinavigationbar/

    0 讨论(0)
  • 2020-12-29 01:14

    You need to set some state somewhere about the current page or currently appropriate image to use, probably in each of your viewWillAppear: methods. Then modify your drawRect: function above to reference that state.

    To cause the bar to be redrawn, call [myNavigationBar setNeedsDisplay] when you update the state. This will cause drawRect to be invoked.

    0 讨论(0)
  • 2020-12-29 01:18

    isn't it possible to use an image view (add) on the navigation bar?

    0 讨论(0)
提交回复
热议问题