iOS 7 Tint Color - 当initWithImage时,UINavigationItem的backBarButtonItem不着色:

ede*_*y05 10 uikit tintcolor ios7

当我使用 - [UIBarButtonItem initWithImage:style:target:selector:]创建条形按钮项时,我无法在导航项的后栏按钮项上应用色调颜色.

使用图像作为视图控制器背景上下文不再可以吗?我似乎无法在HIG中找到任何迹象,或者其他地方已被弃用或不鼓励.

这是我的代码:

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"camera-navigation_item_back"]
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:nil
                                                                 action:nil];
[navItem setBackBarButtonItem:barButtonItem];
Run Code Online (Sandbox Code Playgroud)

iOS 7结果:

IOS 7

iOS 6结果:

iOS 6


编辑:如果我尝试使用其中一个系统项目(加号,垃圾桶等)作为我的后退按钮,Apple会将图像替换为标题"返回".这实际上与iOS 6和7中的行为相同.

car*_*ton 11

将图像的渲染模式设置为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]];
Run Code Online (Sandbox Code Playgroud)

如果您已将tintColor全局设置为以下内容,则不需要最后一行AppDelegate.h:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)