ios:UITabBarController 修改背景图,修改选中时背景色

转载注明出处:http://hi.baidu.com/yunhuaikong/blog/item/086d43fb79fe82c1b58f3128.html

UITabBarController自己的数据有时候让人无言,如选中时的颜色tintcolor,它的背景等,虽然网络现在修改它的例子很多,但个人感觉都不是最好的办法。毕竟这样做代码量还是比较大的,如何用官方的api实现相应的功能呢?看看效果图:

现在一一说明修改方式:

一、修改背景图片:


素材如下:

 

二、修改每一个tabbar选中时的颜色,默认为蓝色。此处修改为自定义的颜色。

 

三、去掉选中时的聚焦高亮颜色。可以对比着看看。这里不给截图。

素材:

宽度为320/tabbar的个数,用背景色。如果需要其他的效果,自己换一个就行了。

 另外一种方法通过

@implementation UITabBar(Draw)
- (void)drawRect:(CGRect)rect{
    // Drawing code.

    CGRect bounds=[self bounds];

    
    NSLog(@"%@",[NSValue valueWithCGRect:bounds]);
    
    // [[UIColor redColor] set];
    
    [[UIColor colorWithPatternImage:[UIImage imageNamed:@"tablebar.png"]] set];
    
    UIRectFill (bounds);
}

@end 


更改导航条的颜色
首先准备导航栏背景图片,大小 320x44, @2x文件大小640x88,iOS5以后更改背景图片较简单
  1. UINavigationBar *navBar = self.navigationController.navigationBar;
  2.  
  3. #define kSCNavBarImageTag 10
  4. if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
  5.     //if iOS 5.0 and later 
  6.     [navBar setBackgroundImage:[UIImage imageNamed:@"navbar1.png"] forBarMetrics:UIBarMetricsDefault];
  7. else 
  8.     UIImageView *imageView = (UIImageView *)[navBar viewWithTag:kSCNavBarImageTag];
  9.     if (imageView == nil) 
  10.     { 
  11.         imageView = [[UIImageView alloc] initWithImage: 
  12.                      [UIImage imageNamed:@"navbar1.png"]];
  13.         [imageView setTag:kSCNavBarImageTag]; 
  14.         [navBar insertSubview:imageView atIndex:0];
  15.         [imageView release]; 
  16.     } 

 


更改颜色,可以使用tintColor属性
  1. myBar.tintColor = [UIColor greenColor]; 

你可能感兴趣的:(ios:UITabBarController 修改背景图,修改选中时背景色)