我正在我的iOS应用中集成存折系统。我正在使用PassKit框架(显然;))。我正在为我的所有导航项使用自定义色调颜色。是否可以更改“取消”和“添加”按钮的颜色? (来自te PKAddPassesViewController)蓝色在我的设计中看起来很可怕。
感谢
答案 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的导航栏,然后选择色调
希望这会对你有所帮助
答案 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有一个可寻址的导航栏控制器。