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

时间:2013-09-26 03:35:52

标签: uikit ios7 tintcolor

当我使用 - [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];

iOS 7结果:

iOS 7

iOS 6结果:

iOS 6


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

2 个答案:

答案 0 :(得分: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]];

如果您在tintColor全局设置AppDelegate.h,则无需输入最后一行:

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

答案 1 :(得分:3)

您应该继续观看WWDC视频: 自定义应用程序在iOS 7中的外观(Session 214,WWDC 2013)

这里发生了很多变化。 例如,UIBarButton图片有一个新的API:

@property(nonatomic,retain) UIImage *backIndicatorImage;
@property(nonatomic,retain) UIImage *backIndicatorTransitionMaskImage;

(在视图控制器弹出过渡期间,当屏幕标题在后退按钮图像下滑动时,屏幕图像会确定其被截断的位置。需要设置。如果未设置,则忽略您设置的backIndicatorImage。)

但实际上,只是观看视频(我所指的部分是在14:00 - 16:00左右,但整个视频很有趣)