用storyboard設計TabBar至關的快捷、方便。
可是在屬性板栗設置TabBarItem背景圖片的時候,Selected Image設置的圖片顏色明明是紅色,可是實際運行後卻變爲藍色。
在StoryBoard中搞了好久也沒解決,後來查到是要在代碼中更改。
UITabItem的頭文件,發現下面的內容:
/* The unselected image is autogenerated from the image argument. The selected image
is autogenerated from the selectedImage if provided and the image argument otherwise.
To prevent system coloring, provide images with UIImageRenderingModeAlwaysOriginal (see UIImage.h)
*/
- (instancetype)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag;
- (instancetype)initWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage NS_AVAILABLE_IOS(7_0);
- (instancetype)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag;
意思是,若是不但願使用系統顏色,須要對圖片加上屬性UIImageRenderingModeAlwaysOriginal
因此按此方式實驗,在對應的TabBarViewController中添加代碼以下:
UIImage *homeImageSel = [UIImage imageNamed:@"home_a.png"];
homeImageSel = [homeImageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *homeItem = [self.tabBar.items objectAtIndex:0];
homeItem.selectedImage = homeImageSel;ide
備註:其實你能夠在Assets.xcassets 你放置圖片的藍色文件夾裏面一樣能夠設置,選中你要的圖片,而後右邊屬性 中 正數第二個 Render As 把Default(系統默認顏色--藍色) 修改爲Original Image (保持圖片原色)就能夠了spa
擴展:設計
着色(Tint Color)是iOS7界面中的一個重大改變,你能夠設置一個UIImage在渲染時是否使用當前視圖的Tint Color。UIImage新增了一個只讀屬性:renderingMode,對應的還有一個新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚舉值來設置圖片的renderingMode屬性。該枚舉中包含下列值:
UIImageRenderingModeAutomatic // 根據圖片的使用環境和所處的繪圖上下文自動調整渲染模式。 UIImageRenderingModeAlwaysOriginal // 始終繪製圖片原始狀態,不使用Tint Color。 UIImageRenderingModeAlwaysTemplate // 始終根據Tint Color繪製圖片,忽略圖片的顏色信息。圖片
renderingMode屬性的默認值是UIImageRenderingModeAutomatic,it
即UIImage是否使用Tint Color取決於它顯示的位置。event