我有一个iPad应用程序(Xcode 5,iOS 7,ARC和Storyboards)。我有一个UITabBarController
,每个场景都有UITabBarItem
。
当我点击标签栏项目时,它会转到正确的场景,但是"当前"标签栏项目图像由"蓝框"覆盖。
如何更换"蓝盒"有不同的形象? (我不想改变颜色;我想用不同的图像替换它。)
答案 0 :(得分:3)
用于标签栏项目的图片必须为renderingMode
,UIImageRenderingModeAlwaysOriginal
,否则它们将显示为蓝色方块(模板)。名为“Tab Bars”的文件说,
标签栏项目图标
标签栏中的每个项目都可以具有自定义选定图像并且未选中 图片。初始化选项卡栏项时,可以指定这些图像 使用initWithTitle:image:selectedImage:方法。请注意一个标签 条形图像将自动呈现为模板图像 在标签栏中,除非您明确将其渲染模式设置为 UIImageRenderingModeAlwaysOriginal。有关更多信息,请参阅模板 图像。
我认为你不能在故事板中设置它们,所以你应该在控制器的init方法中进行设置,
-(id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
UIImage *img = [UIImage imageNamed:@"pic.jpg"];
img = [img imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[self.tabBarItem setSelectedImage:img];
}
return self;
}
答案 1 :(得分:0)
这是一个Xcode错误,将在8.2版本中修复。这是关于此问题的Apple官方说明。查看Interface Builder的链接>已解决的问题> UITabBarController https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
答案 2 :(得分:0)
rdelmar's code的3+版本:
class CustomTabBarController: UITabBarController {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let img = UIImage(imageLiteralResourceName: "pic").withRenderingMode(.alwaysOriginal)
tabBarItem.selectedImage = img
}
}