アプリのデリゲートで iOS 5 用の次のコードを使用して、UINavigationBar フォントをカスタマイズしようとしていますapplication:didFinishLaunchingWithOptions
。
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor blackColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 0)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:kDefaultFont size:0.0], UITextAttributeFont,
nil]];
}
正常に動作し、ナビゲーション バーは私のフォントを使用してレンダリングされます。偉大な。
参考文献フォント サイズ 0 を使用すると、ナビゲーション バーに合わせてフォントのサイズを変更できます (横向きレイアウトの短いナビゲーション バーには、わずかに小さいフォントを使用します)。また、ナビゲーション バーの高さにぴったり合うフォント サイズが選択されます。しかし、縦向きから横向きに移動すると、ナビゲーション バーのタイトル ラベルの幅が台無しになるように見えます。そのため、たとえば「長いタイトルバー」のタイトルとして表示されるものは、最初に表示したときに問題なく表示されます。縦向きでは、横向きで表示すると (適切に小さいフォントで) きれいに見えますが、縦向きに戻すと、フォントは正しく大きいフォントに戻りますが、タイトル テキスト自体が切り詰められて「長い.. ." タイトル全体を表示する十分なスペースがありますが。
明らかに、実際のフォント サイズを指定することはできますが (この場合、この切り捨て動作は見られません)、使用するサイズを手動で判断しています。さらに悪いことに、横向きと縦向きのフォント サイズが同じであるため、現在、短い横向きナビゲーション バーのタイトルに収まるフォント サイズを使用していますが、タイトルは縦長のナビゲーション バーに必要なサイズよりも小さくなっています。
フォント サイズが縦向きと横向きの間で変わるような方法でsetTitleTextAttributes
フォントを変更するために使用した経験がある人はいますか? [UINavigationBar appearance]
さまざまな厄介な回避策を追求しようとしていますが、この問題に関する経験があればお知らせください。
アップデート:
このバグを Apple に提出する過程で、問題を再現する方法を示すことにしました。
Xcode 4.3.2 で新しい iOS マスター/ディテール アプリケーションを作成します。
上記の
setTitleTextAttributes
コードをアプリ デリゲートに配置しますapplication:didFinishLaunchingWithOptions
(フォント @"GillSans" を使用しました)。MasterViewController に移動し、次の行を追加します
self.title = @"Long Title";
コードをコメントアウトし
UIBarButtonItem *addButton
ます。プログラムを実行します。タイトルが「長いタイトル」と正しく表示されていることに注意してください。横向きに回転します。まだ良さそうです。縦向きに戻すと、十分なスペースがあるにもかかわらず、タイトルが「長い...」と表示されます。
不思議なことに、コードを元に戻す
UIBarButtonItem *addButton
と、タイトルは正常に機能します。しかし、UIBarButton アイテムを削除するか、 ではinitWithTitle
なくを使用するボタンに置き換えるとinitWithBarButtonSystemItem
、縦向きから横向きに回転してから縦向きに戻した後に、ナビゲーション バーのタイトルに問題が発生します。