7

このコードを使用して UINavigationBar タイトルの外観をカスタマイズすると、下の画像に示すように、テキストを含むラベルが切り捨てられます。

[[UINavigationBar appearance] setTitleTextAttributes:@{
                            UITextAttributeTextColor : [UIColor whiteColor],
                            UITextAttributeFont : [UIFont fontWithName:@"Intro" size:20.0f],
                            UITextAttributeTextShadowColor : [UIColor clearColor]
                            }];

ここに画像の説明を入力

そして、ご覧のとおり、十分なスペースがあります。

何か案は?

4

4 に答える 4

7

iOS9のアップデート

さまざまなサイズの数十の組み込みフォントを使用して、クリーンなプロジェクトでかなりのテストを行いました。以前のバージョンのiOSで見つかったラベルサイズの問題は(またはそれ以前)iOS9。

元の質問で説明されているユースケースは再現可能ではないようであり、タイトルラベルはそれ自体で適切にサイズ変更されているように見えます。そのため、レイアウトを手動で更新する必要はなくなったと思います。

ナビゲーションバーに明らかに十分な視覚的スペースがあるのに切り捨ての問題がまだ発生する場合は、次のことを試すことができます。

  1. 問題を回避するために使用していた可能性のある余分なビューをすべて削除します。たとえば、独自に作成UILabelしてナビゲーションバーとして設定しているtitleView場合は、それをやめて、通常どおりタイトルを設定できます。
  2. ナビゲーションバーとのサイズを調整するコードをできるだけ削除しますtitleView。これには、以下の最初に受け入れられた回答にあるコードが含まれます。
  3. カスタムフォント(つまり、iOSに含まれていないフォント)を使用している場合は、フォントが破損していないことを確認し、iOSが適切に測定するために必要なすべてのメタデータが含まれていることを確認します。フォントが破損していると、使用時に正しく表示されない場合があります。

元の回答

UINavigationBarのレイアウトにはいくつかの既知の問題があります。ビューコントローラが表示されたとき、および/または回転時にレイアウトを更新してみてください。

- (void)viewDidLoad
{
    [super viewDidLoad];
    ...
    [[[self navigationController] navigationBar] setNeedsLayout];
}
于 2013-03-18T15:14:18.533 に答える
1

クリアな背景色と希望のテキスト設定でを作成しUILabelてみてください。次に、このラベルを自分の属性として設定できますtitleViewUINavigationBar

于 2013-03-15T21:03:27.287 に答える