11

私はiosアプリの最小ios 5に取り組んでおり、uilabelsで奇妙な問題に遭遇しました。または、明らかな何かが欠けているかもしれません。とにかく、私が抱えている問題は、テキストを中央揃えにするuilabelがあることです。iOS 5 ではすべて正常に動作しますが、iOS 6 では常に左揃えになります。uilabel text align を行う古い方法が廃止され、そのように設定すると機能することがわかりました。

self.topComment.textAlignment = NSTextAlignmentCenter;

しかし、この方法でも、ios 5 では中央揃え、ios 6 では左揃えになっています。ラベルのテキストのフォントのサイズを変更して、最小サイズと最大サイズに合わせようとするコードがあります。

UIFont *font = self.topComment.font;

for(int i = maxFont; i > minFont; i--)
{
    // Set the new font size.
    font = [font fontWithSize:i];
    CGSize constraintSize = CGSizeMake(self.topComment.frame.size.width, 1000);
    CGSize labelSize = [topString sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    if(labelSize.height <= self.topComment.frame.size.height ) {
        fits = YES;
        break;
    }
    //self.topComment.text = topString;

}


self.topComment.font = font;
self.topComment.text = topString;

それが私がラベルに対して行っている唯一のことですが、ios 6では常に左揃えです。テキストを含むuilabelにドロップして中央揃えにし、上記のコードを使用しない場合、両方の中央に配置されることに注意してください。 iOS 5 および 6。

4

2 に答える 2

37

[Tighten Letter Spacing] をオンにすると、ios 5 と 6 で異なる結果が得られるようです。違いの理由を正直に説明することはできませんが、これをオフにするだけで、希望するラベルの中央揃えが得られます。他の誰かが同じばかげた間違いを犯した場合に備えて、これを答えとしてここに残しておきます。

例えば:

    lbl.adjustsLetterSpacingToFitWidth = NO;

これは iOS 7.0 では廃止されていることに注意してください。

于 2012-10-17T12:09:37.880 に答える
-2

iOS 6以降の場合:

label.textAlignment = NSTextAlignmentLeft;
于 2012-12-15T12:45:00.597 に答える