iOS 6 以降、アプリケーションでカスタム スタイルを使用する際にいくつかの問題が発生しました。カスタム フォントといくつかのUIAppearance
プロキシを使用します。私が理解できない問題は、UINavigationBar のタイトルのずれです。iOS 5 では、すべてが正常に機能し、正しく配置されていました。
iOS6 がリリースされ、カスタム スタイルが珍しくないので、これはバグではなく、iOS6 への新しい変更に対する私の誤解だと思います。
UIAppearance プロキシで呼び出すテキスト配置メソッドのドキュメントを検索しましたが、そのようなメソッドを見つけることができませんでした。
次のコード行を使用して、アプリケーション全体で UINavigationBar のスタイルを設定します。
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBarBackground"]
forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBarBackground"]
forBarMetrics:UIBarMetricsLandscapePhone];
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIFont fontWithName:@"Corbel-Bold" size:14.0], UITextAttributeFont,
nil]];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor whiteColor]];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor ceBlueColor], UITextAttributeTextColor,
[UIColor whiteColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Corbel" size:0.0], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -3) forBarMetrics:UIBarMetricsDefault];