私は持っています、MFMailComposeViewController
そして私が主題を設定したとき、それはまたそれを主題として設定します。問題は、タイトルと色のフォントをどのようにカスタマイズするかです。
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[picker setSubject:@"Feedback for MyApp"];
私は持っています、MFMailComposeViewController
そして私が主題を設定したとき、それはまたそれを主題として設定します。問題は、タイトルと色のフォントをどのようにカスタマイズするかです。
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[picker setSubject:@"Feedback for MyApp"];
アプリのフォントを、すべての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などの他の場合に機能するので、この状況でも同様に機能するはずです。
私の推測では、クロスプロセスの制限のためにそれを行うことはできません。色、サイズ、フォント(組み込みのシステムフォントの場合)を変更できますが、アプリに含まれているフォントのいずれかに変更しようとすると失敗します。
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];