2

我有一个MFMailComposeViewController,当我设置主题时,它也将其设置为主题。问题是如何自定义标题和颜色的字体?

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[picker setSubject:@"Feedback for MyApp"];
4

3 回答 3

8

我已经从所有视图控制器的所有导航栏的应用程序委托中更改了我的应用程序的字体。如果您不介意更改所有导航栏标题字体,请输入以下内容applicationDidFinishLaunching:withOptions:

    if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
        // set the navigation bar font to "courier-new bold 14"
        [[UINavigationBar appearance] setTitleTextAttributes:
         [NSDictionary dictionaryWithObjectsAndKeys:[UIColor lightGrayColor], UITextAttributeTextShadowColor,
                                                    [NSValue valueWithUIOffset:UIOffsetMake(1, 0)], UITextAttributeTextShadowOffset,
                                                    [UIFont fontWithName:@"CourierNewPS-BoldMT" size:14.0], UITextAttributeFont, 
                                                    nil]];

更新: 如果您希望它针对这种情况,您可能可以使用外观时包含:使用 Alexander Akers 在下面的评论中建议的参数,因为 UIViewController 继承自 UIAppearanceContainer。我知道appearanceWhenContainedIn:适用于其他情况,例如UINavigationBar中包含的UIBarButtonItems,因此在这种情况下它应该类似地工作。

于 2012-06-24T01:56:01.840 回答
3

我的猜测是由于跨进程限制而无法完成。我可以更改颜色、大小和字体(如果它是内置系统字体),但尝试将其更改为我的应用程序中包含的任何字体都会失败。

于 2012-12-19T19:18:27.263 回答
-1

由于MFMailComposeViewController是 a 的实例UINavigationController,因此您可以将其 titleView 设置topViewController如下:

UIViewController *controller = [mailController topViewController];

UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 170.0f, 44.0f)];
titleView.backgroundColor = [UIColor clearColor];

UILabel *label = [[UILabel alloc] initWithFrame:titleView.bounds];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.text = @"Custom Font";
label.font = [UIFont italicSystemFontOfSize:27.0f];
label.textAlignment = UITextAlignmentCenter;

[titleView addSubview:label];
[label release];

controller.navigationItem.titleView = titleView;
[titleView release];
于 2012-06-24T02:12:06.857 回答