UITabBarItem setFinishedSelectedImage:在iOS7中已弃用

setFinishedSelectedImage:withFinishedUnselectedImage:在iOS7中已弃用。 苹果推荐使用UIImageRenderingModeAlwaysOriginalimageselectedImage setter。 我找不到如何使用UIImageRenderingModeAlwaysOriginal任何示例。 所以这个问题很简单:如何在iOS7中为UITabBarItem设置图像?

如果你正试图在UITabBar上实现显示实际图像,那么使用下面的代码。

 [yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

如果要以所选的原始状态显示图像,请使用以下内容

 [yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

这两个是替代

 setFinishedSelectedImage: withFinishedUnselectedImage: 

setFinishedSelectedImage被弃用,因为苹果希望将接口定向到使用模板图像和你select的tintColor(或者蓝色的默认值)。所以,简单的默认是这样做的标签栏条目。

如果您仍然需要按照devise使用Icon图像,则可以使用Always Origin的渲染模式创build图像。 喜欢:

 [[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]]; } 

结果是select标签时devise的图标。 如果离开imageWithRenderingMode方法调用,图标将被视为使用tintColor着色的模板。 希望这可以帮助。

 class TabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() self.tabBar.backgroundImage = UIImage() self.tabBar.shadowImage = UIImage() } }