0

I'm using QLPreviewController for showing a pdf. I want to change the background images for UINavigationBar and UIBarButtonItems of QLPreviewController.

I'm using this code:

for (id object in controller.childViewControllers)
{
    if ([object isKindOfClass:[UINavigationController class]])
    {
        UINavigationController *navController = object;

        [navController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar_1x.png"] forBarMetrics:UIBarMetricsDefault];
        NSLog(@"items count ====%d",[[navController.navigationBar items] count]);

        if ([[navController.navigationBar items] count] > 0)
        {
            UINavigationItem *navItem = [[navController.navigationBar items] objectAtIndex:0];
            navItem.rightBarButtonItem.image = [UIImage imageNamed:@"pdf30.png"];

        }
    }
}

By using above code I changed background image of navigationbar. But I can't changing background images for barbuttonitems.

Please help me. Thanks in advance.....

Goutham
  • 299
  • 1
  • 24
  • Try looking at other questions on Stackoverflow first to avoid duplicity. This may help you:http://stackoverflow.com/questions/10461004/how-to-change-background-image-for-navigation-itembutton OR http://stackoverflow.com/questions/10496666/ios-5-change-the-background-of-back-button-in-navigation-controller-to-transpare – Puneet Sharma Sep 16 '13 at 05:39

2 Answers2

0

If you want you can customize the bar button.. try like this..

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [backButton setImage:[UIImage imageNamed:@"pdf30.png"] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside];
    backButton.frame = CGRectMake(0.0f, 0.0f, 64.0f, 41.0f);
    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

    self.navigationItem.leftBarButtonItem = backButtonItem;
}
kalyani puvvada
  • 496
  • 4
  • 12
0
UIImage*resizedImage = [[UIImage imageNamed:@"navbar_2x.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 12, 12, 10)];
id navbar =[UINavigationBar appearance];
id barbutton =[UIBarButtonItem appearance];
//this customises the navigation bar
[navbar setBackgroundImage:resizedImage forBarMetrics:UIBarMetricsDefault];
UIImage *backButton = [[UIImage imageNamed:@"backwhite.png"]  resizableImageWithCapInsets:UIEdgeInsetsMake(10 , 18, 10 , 18)];

// this customises the back bar button item in the navigation bar
[barbutton setBackButtonBackgroundImage:backButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];


// this for other bar button items
[barbutton setBackgroundImage:backButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];