10

当我使用 -[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 中的行为相同。

4

2 回答 2

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如果您已全局设置 in ,则不需要最后一行AppDelegate.h

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
于 2013-09-29T00:31:38.370 回答
3

您应该继续观看 WWDC 视频: Customizing Your App's Appearance for iOS 7 (Session 214, WWDC 2013)

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

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

(蒙版图像决定了在视图控制器弹出转换期间,当它在后退按钮图像下方滑动时,Bar Title 被切断的位置。需要设置。如果未设置,则忽略您设置的 backIndicatorImage。)

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

于 2013-09-26T19:43:23.233 回答