Custom UINavigationController UIToolbar Background Image

前端 未结 4 1737
灰色年华
灰色年华 2021-01-30 07:41

I have an iPhone application using UINavigationController and would like to customize the elements with custom background images. I was able to do this for the

4条回答
  •  一个人的身影
    2021-01-30 08:26

    One of the best solutions is creating a category of UINavigationBar and UIToolbar. The next classes gives you a solution for iOS 4.0 and iOS 5.0 compatibility:

    The only thing is you need to call the next methods in your viewDidLoad for example:

    // Customizacion de navigation bar y toolbar compatible con iOS4 e iOS5
    [UINavigationBar iOS5UINavigationBarBackgroundImage];
    [UIToolbar iOS5UIToolbarBackgroundImage];    
    

    So, the class Category for iOS 4.0 and iOS 5.0 compatibility for customize BackgroundImage results like follow:

    @implementation UINavigationBar (BackgroundImage)
    - (void)drawRect:(CGRect)rect 
    {    
        UIImage* img = [UIImage imageNamed: @"navigation-bg.png"];
        [img drawInRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];  
        [self setTintColor:UIColorFromRGB(0x5ca666)];      
    }
    + (void) iOS5UINavigationBarBackgroundImage
    {
        if ([UINavigationBar respondsToSelector: @selector(appearance)])
        {
            [[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed: @"navigation-bg.png"] forBarMetrics: UIBarMetricsDefault];
            [[UINavigationBar appearance] setTintColor:UIColorFromRGB(0x5ca666)];
        }
    }
    @end
    
    @implementation UIToolbar (BackgroundImage)
    - (void)drawRect:(CGRect)rect 
    {
        UIImage *image = [UIImage imageNamed: @"toolbar-bg.png"];
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
        [self setTintColor:UIColorFromRGB(0x5ca666)];
    }
    + (void) iOS5UIToolbarBackgroundImage
    {
        if ([UIToolbar respondsToSelector: @selector(appearance)])
        {
            [[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed: @"toolbar-bg.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
            [[UIToolbar appearance] setTintColor:UIColorFromRGB(0x5ca666)];
        }
    }
    @end
    

    Greets!

提交回复
热议问题