tabbarItem設置圖片后運行往往與我們原始圖片顏色有出入,這是因為在默認情況下,未選中狀態圖片和字體顏色為灰色,選中狀態下圖片和字體顏色為藍色。
UIImage 在呈現(render)時會選擇對應的呈現方式(render mode),ios提供了3種render mode,分別是
值 | 意義 |
UIImageRenderingModeAutomatic | 根據圖片的使用位置自動調整渲染模式(默認值) |
UIImageRenderingModeAlwaysOriginal | 始終繪制圖片原始狀態,不適用tint color。 |
UIImageRenderingModeAlwaysTemplate | 使用根據tint color繪制圖片,忽略圖片的顏色信息 |
所以,要解決我們的問題,只需要設置normal及select狀態下圖片的render mode就可以了。
UIImage *image = [[UIImage imageNamed:@"barItem1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; UIImage *selectImage = [[UIImage imageNamed:@"barItem1s"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; UITabBarItem *tabbarItem = [[UITabBarItem alloc] initWithTitle:@"首頁" image:image selectedImage:selectImage];
修改選中字體顏色(normal狀態同理)
[tabbarItem setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor colorWithRed:0xD9 / 255.0 green:0x1D / 255.0 blue:0x37 / 255.0 alpha:1]} forState:UIControlStateSelected]; self.navigationController.tabBarItem = tabbarItem;