当我使用 - [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 6结果:
编辑:如果我尝试使用其中一个系统项(加号,垃圾桶等)作为我的后退按钮,Apple会将图像替换为标题“返回”。这实际上与iOS 6和7中的行为相同。
答案 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左右,但整个视频很有趣)