NavigationBar setShadowImage does not always work

I am trying to set a custom shadow image for the navigation bar in my table views, but it only appears in some views. I created a superclass for setting styles for my table views.

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Set navigation bar background
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault];

    // Set navigation bar shadow imag
    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]];

In the view that I see when the application starts, the shadows are not displayed. But when I touch the [+] button in my navigation bar to open the “add new item” tabular view, it will show a shadow.

Can someone point me in the right direction here?

+5
source share
3 answers

Appearance proxy should work.

Just run it somewhere (e.g. in AppDelegate) at startup.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
    [self customizeAppearance];
    return YES;
}

- (void) customizeAppearance 
{
    // Set the background image for *all* UINavigationBars
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground"] forBarMetrics:UIBarMetricsDefault];

    // Set the shadow image for *all* UINavigationBars
    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]];  

    //add other appearance stuff here...
}

, UINavigationController segue, , , .

Clip Subviews - nib . , , ()!

ClipSubviews

, imageNamed, .

+7

backgroudImage UINavigationBar, shadowImage.

+9

!

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]];
0

All Articles