uikit – iOS 7 Tint Color – UINavigationItem的backBarButtonItem在initWithImage时不起色:

当我使用 – [UIBarButtonItem initWith Image:style:target:selector:]创建条形按钮项目时,我无法应用色彩颜色的导航项的后退按钮项.

使用图像作为视图控制器后台上下文不再可以吗?我似乎没有在HIG中找到任何指示,或者其中已被弃用或不鼓励的地方.

这是我的代码

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"camera-navigation_item_back"]
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:nil
                                                                 action:nil];
[navItem setBackBarButtonItem:barButtonItem];

iOS 7结果:

iOS 6结果:

编辑:如果我尝试使用其中一个系统项目(加号,垃圾箱等)作为我的后退按钮,Apple将图像替换为标题“Back”.这在iOS 6和7中实际上是一样的.

解决方法

将图像的渲染模式设置为UIImageReneringModeAlwaystemplate(该主题在上一个答案中提到的WWDC视频的33:00附近):
UIImage *backButtonImage = [UIImage imageNamed:@"imageName.png"];
backButtonImage = [backButtonImage imageWithRenderingMode:UIImageRenderingModeAlwaystemplate];
UIBarButtonItem * backButton = [[UIBarButtonItem alloc]
                               initWithImage:backButtonImage
                               style:UIBarButtonItemStylePlain
                               target:nil
                               action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
[[[self navigationItem] backBarButtonItem] setTintColor:[UIColor redColor]];

如果您在AppDelegate.h中全局设置了tintColor,则不需要最后一行:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...