在MFMailComposeViewController中更改导航的主标题颜色

时间:2012-06-12 12:20:20

标签: iphone objective-c xcode cocoa-touch

我对普通viewController的导航主标题的更改颜色没有问题,但是在MFMailComposeViewController上,这是不可能的。 我可以改变按钮的颜色(取消和发送),我可以设置导航栏的背景但不能改变标题的颜色。我不想设置一个新标题(显然,Apple不允许),我只想改变颜色:'(

请帮帮我。 感谢

4 个答案:

答案 0 :(得分:15)

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

或者

navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor yellowColor] forKey:UITextAttributeTextColor];

希望它为你工作..

答案 1 :(得分:15)

这是iOS 7,8,9和10的正确答案:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[[picker navigationBar] setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName]];

原因如下:

上面标记答案(由Mani引用[UINavigationBar appearance])是不正确的,因为它会更改UINavigationBar中弹出MFMailComposeViewController的标题的颜色,这是我不想要的效果。你需要像我的代码那样专门获取选择器的NavBar。

从iOS 7(Mani的另一个答案)设置tintColor也不正确,因为它设置了按钮的颜色,而不是标题。

此外,UITextAttributeTextColor现已弃用,请使用NSForegroundColorAttributeName

答案 2 :(得分:10)

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init];
    picker.mailComposeDelegate = self;
    [[picker navigationBar] setTintColor:[UIColor blackColor]];

答案 3 :(得分:0)

对于黑色以外的颜色,请使用此代码:

MFMailComposeViewController *mailController  = [MFMailComposeViewController new];

            [mailController.navigationBar setTintColor:[UIColor colorWithHue:240.0f/359.0f
                                                                  saturation:85.0f/100.0f 
                                                                  brightness:60.0f/100.0f 
                                                                       alpha:0.0f]];