UIToolBar,UINavigationBar 修改背景色

UIToolBar,UINavigationBar 修改背景色

UIToolBar 三種辦法

方法一

 

/toolBar background image set based on iOS version
    [[UIDevice currentDevice] systemVersion];

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {

        //iOS 5
        UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"];  

        if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
            [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
        }

    } else {

        //iOS 4
        [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 

    } 

 

 方法二

 // MyToolBar.h

#import <UIKit/UIKit.h>
@interface MyToolBar : UIToolbar {

}
@end

// MyToolBar.m
#import "MyToolBar.h"
@implementation MyToolBar

- (void)drawRect:(CGRect)rect {
 CGContextRef c = UIGraphicsGetCurrentContext();
 UIImage *image = [UIImage imageNamed:@"fish.png"];
 CGContextDrawImage(c, rect, image.CGImage);
}
@end

 

方法三

-(void)drawRect:(CGRect)rect
{
    
    UIImage *img  = [[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ToolbarBk" ofType:@"png"]] autorelease];
    [img drawInRect:CGRectMake(00, self.frame.size.width, self.frame.size.height)];
   

} 

UINavigationBar  

在APPDelegate添加

@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:@"navbar.png"];
[img drawInRect:rect];
}

@end 

 

 if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
}

---------------------------

iOS5.0以前的程序可以重載UINavigationBardrawRect函數 @implementation UINavigationBar (CustomImage) - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed: @\\\\\\\"cm_nav_bg.png\\\\\\\"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } @end IOS5.0之後系統提供了api直接設置背景,重載drawRect沒有用了,最好是把兩種方法都用上 if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@\\\\\\\"cm_nav_bg.png\\\\\\\"] forBarMetrics:UIBarMetricsDefault]; } PS:背景圖片用1像素寬的漸變圖片可以實現從上到下的漸變效果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章