setFinishedSelectedImage:withFinishedUnselectedImage:
在iOS7中已经被弃用。苹果建议使用image
和selectedImage
的setter,配合UIImageRenderingModeAlwaysOriginal
来代替。我找不到任何关于如何使用UIImageRenderingModeAlwaysOriginal
的示例。因此问题很简单:如何在iOS7中设置UITabBarItem
的图像?
setFinishedSelectedImage:withFinishedUnselectedImage:
在iOS7中已经被弃用。苹果建议使用image
和selectedImage
的setter,配合UIImageRenderingModeAlwaysOriginal
来代替。我找不到任何关于如何使用UIImageRenderingModeAlwaysOriginal
的示例。因此问题很简单:如何在iOS7中设置UITabBarItem
的图像?
如果您想在UITabBar上显示实际图像,则使用以下代码。
[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
如果您希望以原始状态显示所选的图像,则使用以下内容
[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
这两个是替代品
setFinishedSelectedImage: withFinishedUnselectedImage:
setFinishedSelectedImage
已被弃用,因为苹果希望将界面引导至使用模板图像和所选的tintColor(或蓝色默认值)。因此,Tab Bar Items采用了默认设置。
如果您仍需要按设计使用图标图像,则需使用始终原始的渲染模式创建该图像。例如:
[[UIImage imageNamed:@"YourIcon.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
ViewController
中获取tabBarItem
。在我的应用程序中缺少的是,每个选项卡都有一个NavigationController
包装选项卡中顶部的视图控制器。大多数有关此主题的答案没有提及获取navigationContoller,这是使其在我的应用程序中运行的关键。UITableViewContoller
子类中,我添加了以下内容以加载viewDidLoad
。- (void)viewDidLoad
{
[super viewDidLoad];
...
[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"]
imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]];
}
当选中选项卡时,您将得到设计好的图标。如果省略imageWithRenderingMode方法调用,则该图标将被视为模板并着色为tintColor颜色。希望这可以帮助您。
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.backgroundImage = UIImage()
self.tabBar.shadowImage = UIImage()
}
}