1

Interface Builder で定義されたフォントを使用して UILabel を太字にしたり太字にしたりする方法を見つけようとしています。

私はこれを行うことができることを知っています、例えば:

[myLabel setFont:[UIFont boldSystemFontOfSize:14.0]];

しかし、IB で設計された方法とは (スタイルとサイズの両方で) 潜在的に異なるフォントを強制しています。

私は本質的にこれを行うものを探しています:

[myLabel setBold:TRUE];

または場合によっては False。

これを行う方法はありますか?

4

4 に答える 4

2

残念ながら、UIKit には「太字」の概念はありません。属性付き文字列の一部を「太字」に設定しようとすると、実際には同じフォント ファミリの太字フォント バリアントを選択していることになります。

次のような半ハックなことができます。

@implementation UIFont (BoldVariant)

- (UIFont *)boldVariant
{
    for (NSString *fontName in [UIFont fontNamesForFamilyName:self.familyName]) {
        if ([fontName hasSuffix:@"-Bold"]) {
            return [UIFont fontWithName:fontName size:self.pointSize];
        }
    }

    // If we couldn't find it, return the same font.
    return self;
}

@end

これは、フォントが標準の命名スキームに従っていることを前提としています。fontNamesForFamilyName:また、が任意の値を返すことも前提としています。システム フォントを使用すると、空の配列が返されることに気付きました。

于 2013-09-25T18:00:52.450 に答える
0

たとえばシステム フォントの Helvetica を使用している場合、次のように label.text を太字にすることができます。

myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];

たとえば、このサイトで iOS フォントを見つけることができます:リンク

于 2013-09-25T17:45:04.630 に答える