2

私は持っています、MFMailComposeViewControllerそして私が主題を設定したとき、それはまたそれを主題として設定します。問題は、タイトルと色のフォントをどのようにカスタマイズするかです。

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

3 に答える 3

8

アプリのフォントを、すべてのViewControllerのすべてのナビゲーションバーのapp-delegateから変更しました。ナビゲーションバーのタイトルフォントをすべて変更してもかまわない場合は、次のように入力してください。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]];

更新: この1つのケースに固有にする場合は、UIViewControllerがUIAppearanceContainerを継承するため、おそらくappearanceWhenContainedIn:以下のコメントで提案されている引数AlexanderAkersを使用できます。私はappearanceWhenContainedInを知っています:UINavigationBarに含まれるUIBarButtonItemsなどの他の場合に機能するので、この状況でも同様に機能するはずです。

于 2012-06-24T01:56:01.840 に答える
3

私の推測では、クロスプロセスの制限のためにそれを行うことはできません。色、サイズ、フォント(組み込みのシステムフォントの場合)を変更できますが、アプリに含まれているフォントのいずれかに変更しようとすると失敗します。

于 2012-12-19T19:18:27.263 に答える
-1

MFMailComposeViewControllerはのインスタンスであるため、次のよう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 に答える