在情节提要中设置 UITabBarItem 图像但在 运行 应用程序后的处理方式不同
Setting UITabBarItem image in storyboard but different looking after run app
1) 我在 Assets.xcassets 中添加了四个 png 图像。
2)在情节提要中,我嵌入了一个标签栏控制器。设置 TabBarItem 图像。
3) 但在 运行 应用程序之后。我发现图像看起来与我的设置有点不同,我不知道为什么,谁能知道为什么以及如何修复?等你帮忙,谢谢
你需要设置 UIImage.renderingMode,
试试这个
NSArray *items = self.tabBar.items;
UITabBarItem *item = items[0];
item.image = [[UIImage imageNamed:@"tabbar_recruit.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
图像看起来不同的原因是因为它填充的是平面颜色,而您的 .png 包含一些白色而不是空白背景。 UIImage
有一个 属性 叫做 renderingMode
。这个属性可以是default
、AlwaysOrigin
、AlwaysTemplate
。
所以对于 UITabBarItem
,默认渲染模式是 AlwaysTemplate
,这就是填充图像的原因。并且由于您的图像在搜索图标内包含白色背景(它应该不包含绘图)它也会被填充。
所以你有两个选择:
1.去除图标的白色背景。
2. 由于您使用的是XCAssets,您可以在XCAssets 属性面板中更改渲染模式。
您可以在此处使用 XCAssets 执行此操作:
1) 我在 Assets.xcassets 中添加了四个 png 图像。
2)在情节提要中,我嵌入了一个标签栏控制器。设置 TabBarItem 图像。
3) 但在 运行 应用程序之后。我发现图像看起来与我的设置有点不同,我不知道为什么,谁能知道为什么以及如何修复?等你帮忙,谢谢
你需要设置 UIImage.renderingMode, 试试这个
NSArray *items = self.tabBar.items;
UITabBarItem *item = items[0];
item.image = [[UIImage imageNamed:@"tabbar_recruit.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
图像看起来不同的原因是因为它填充的是平面颜色,而您的 .png 包含一些白色而不是空白背景。 UIImage
有一个 属性 叫做 renderingMode
。这个属性可以是default
、AlwaysOrigin
、AlwaysTemplate
。
所以对于 UITabBarItem
,默认渲染模式是 AlwaysTemplate
,这就是填充图像的原因。并且由于您的图像在搜索图标内包含白色背景(它应该不包含绘图)它也会被填充。
所以你有两个选择:
1.去除图标的白色背景。
2. 由于您使用的是XCAssets,您可以在XCAssets 属性面板中更改渲染模式。
您可以在此处使用 XCAssets 执行此操作: