更改导航栏PKAddPassesViewController的tintcolor

时间:2014-05-09 10:02:47

标签: ios objective-c xcode5 passbook

我正在我的iOS应用中集成存折系统。我正在使用PassKit框架(显然;))。我正在为我的所有导航项使用自定义色调颜色。是否可以更改“取消”和“添加”按钮的颜色? (来自te PKAddPassesViewController)蓝色在我的设计中看起来很可怕。

感谢

4 个答案:

答案 0 :(得分:1)

在iOS 9中,可以更改按钮颜色。子类化PKAddPassesViewController并在viewWillAppear中设置窗口tintcolor,并确保在viewWillDisappear中将其设置回来。然后使用您的子类而不是PKAddPassesViewController:

MyPKAddPassesViewController.h:

#import <PassKit/PassKit.h>

@interface LHPKAddPassesViewController : PKAddPassesViewController

@end

MyPKAddPassesViewController.m:

#import "LHPKAddPassesViewController.h"

@implementation LHPKAddPassesViewController

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    ((UIWindow *)[UIApplication sharedApplication].keyWindow).tintColor = [UIColor greenColor];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    ((UIWindow *)[UIApplication sharedApplication].keyWindow).tintColor = [UIColor whiteColor];
}

@end

答案 1 :(得分:1)

有一种简单的方法可以在iOS 9中执行此操作。在PKAddPassesViewController的调用者中使用此:

PKAddPassesViewController *addToPassbookController = init...

[addToPassbookController.view setTintColor:[UIColor blackColor];

答案 2 :(得分:0)

在Storyboard中,选择UINavigationController的导航栏,然后选择色调

enter image description here

希望这会对你有所帮助

答案 3 :(得分:0)

我认为你不能改变tintcolor。从iOS 6开始,这样的viewControllers基于remote view controllers,这意味着它们的视图完全由另一个进程拥有,并且以编程方式无法访问。

这可以通过查看控制器视图的递归描述来确认:

<UIView: 0x140b0780; frame = (0 0; 320 568); layer = <CALayer: 0x140b0860>>
|    | <_UISizeTrackingView: 0xe3b7300; frame = (0 20; 320 548); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xe3b7410>>
|    |    | <_UIRemoteView: 0xe3b9b80; frame = (0 0; 320 568);

_UIRemoteView表示视图的内容托管在另一个进程中。

编辑:

好奇的MFMailComposeViewController它有效。这个viewController有一个可寻址的导航栏控制器。