1. 程式人生 > >iOS開發- UITabBarItem自定義圖片

iOS開發- UITabBarItem自定義圖片

1:如圖一下效果



程式碼如下:

QRcodeViewController *threeViewController

    = [[QRcodeViewControlleralloc]init];

UINavigationController *threeNavigationController

    = [[UINavigationControlleralloc]initWithRootViewController:threeViewController];

    threeNavigationController.navigationBar.barStyle =UIBarStyleBlack

;

UIImage*  image = [[UIImageimageNamed:@"btn_saoyisao_default"]

                     imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; //這兩個地方一定要加上

UIImage*  selectedImage = [[UIImageimageNamed:@"btn_saoyisao_enter"]

                     imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal

];

UITabBarItem* tabBarItemL = [[UITabBarItemalloc]initWithTitle:nil 

                                                     image:imageselectedImage:selectedImage];

    threeNavigationController.tabBarItem=tabBarItemL;

    threeNavigationController.tabBarItem.imageInsets =UIEdgeInsetsMake(5,0, -5,0);

2:除灰色

在專案中使用UITabBarController的時候, 每個UITabBarItem都可以展示對應的圖片。

UITabBarItem有兩種狀態, 即 選中/ 非選中狀態。

如果用storyboard設定圖片, 那麼設定的是選中狀態的圖片, 並且, 它會自動的填充為深藍色. (就是 default color)至於非選中狀態呢, 它會自動的變成灰色。  

這大大影響了美觀。

如下:


我們想要的效果, 應該是這樣的:


如果要變成這樣, 需要在UITabBarController中加入如下程式碼:

  1. NSArray *items = self.tabBar.items;  
  2. UITabBarItem *homeItem = items[0];  
  3. homeItem.image = [[UIImage imageNamed:@"tab_buddy_nor.png"]
  4.                            imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
  1. homeItem.selectedImage = [[UIImage imageNamed:@"tab_buddy_press.png"]
  2.                            imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
  3. UITabBarItem *qqItem = items[1];  
  4. qqItem.image = [[UIImage imageNamed:@"tab_me_nor.png"]
  5.                 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
  6. qqItem.selectedImage = [[UIImage imageNamed:@"tab_me_press.png"]
  7.                 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];