iPhone / iPadのUILabelで太字と斜体を設定するにはどうすればよいですか?


138

UILabeliPhone / iPadで太字や斜体を設定するにはどうすればよいですか?フォーラムを検索しましたが、役に立ちませんでした。誰か助けてもらえますか?


あなたはイタリック体なしでカスタムを使用している場合は、[この方法を試してみてください。] [1] [1]:stackoverflow.com/questions/21009957/...
Jakehao

回答:


132
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

'fontWithName'属性の代わりに設定できるフォント名のリストがあります。リンクはこちらです


5
より良い答えは、@ Maksymilian Wojakowskiの拡張メソッド.withTraits()を使用したものです
不可返品不可

先生の先生どのように設定されたテキストボックスのスタイルに大胆な宣言サイズ客観Cなし
ラマニHitesh

3
固定フォント名を使用しているため、これには問題があります。これは変更される可能性があるため、これは良い解決策ではありません。Maksymilian Wojakowskiからの回答は、より良く、はるかに柔軟です。
Ray Wojciechowski

274

フォント名をいじらないでください。フォント記述子を使用すると、名前は必要ありません。

UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
            fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
                            | UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];

size:0 「サイズをそのまま維持する」ことを意味します

Swiftを使用して、次の拡張機能を試してください。

extension UIFont {

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor()
            .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
        return UIFont(descriptor: descriptor, size: 0)
    }

    func boldItalic() -> UIFont {
        return withTraits(.TraitBold, .TraitItalic)
    }

}

次に、次のように使用します。

myLabel.font = myLabel.font.boldItalic()

または、Condensedのような追加の特性を追加します。

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)

Swift 4の更新:

extension UIFont {
  var bold: UIFont {
    return with(traits: .traitBold)
  } // bold

  var italic: UIFont {
    return with(traits: .traitItalic)
  } // italic

  var boldItalic: UIFont {
    return with(traits: [.traitBold, .traitItalic])
  } // boldItalic


  func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
    guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
      return self
    } // guard

    return UIFont(descriptor: descriptor, size: 0)
  } // with(traits:)
} // extension

次のように使用します。

myLabel.font = myLabel.font.bold

または

myLabel.font = myLabel.font.italic

または

myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])

Swift 5のアップデート

extension UIFont {
    var bold: UIFont {
        return with(.traitBold)
    }

    var italic: UIFont {
        return with(.traitItalic)
    }

    var boldItalic: UIFont {
        return with([.traitBold, .traitItalic])
    }



    func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

    func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }
}

5
なぜこれ以上投票されなかったのか分からない!太字や斜体のスタイルがないフォントの場合、これはすばらしいことです。
Chris Prince

4
ああ。なぜこれはそれほど人気が​​ないのでしょうか。iOS7以降でのみ利用可能...
Chris Prince

3
これをNDAの下で検討する必要があるかどうかはわかりませんが、Xcode6とiOS8 GMシードを使用すると、iOS7ではnilではなかったので、カスタムフォントのnilフォント記述子が返されます。
Chris Prince、

@Maksymilianこのメソッドを複数のラベルのどこかで拒否できますか:uitableview
Majid Bashir

2
この回答は非常に役立つので、簡単なメモです。return withTraits(.TraitBold, .TraitCondensed)おそらくreturn withTraits(.TraitBold, .TraitItalic)、関数名と一致するはずです。
BreadicalMD 2016

103

@Edinatorはこれを見てください。

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];

上記のいずれかを必要なときに使用する


1
2つのスタイルは機能しません。この場合、後者はイタリック体になります。返信ありがとうございます!
Edi

@Edinator yups私は一度に1つだけ使用する必要があることを知っています...私も私の回答を編集しました!
Sudhanshu、2011年

8

フォントフィールドで文字「T」をクリックすることにより、ラベルのフォントスタイル、ファミリ、サイズを設定できます。

ラベルのフォント設定


しかし、ここに大きな問題があります。fontWithName:@ "Arial-Light"を使用する以外に、スクリーンショットで他のウェイトをどのように指定しますか?すべてがboldSystemFontSize(of:__)を表示しますが、誰かが光または超光を必要とする場合はどうなりますか?
Dave G

6

ラベルとボタンに太字と斜体の両方を適用する必要がある同じ問題があります。次のコードを使用して、この効果を実現できます。

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];

1
私はあなたが「アリエル」ではなく「Arial」を意味していたと思います:)
MMMM

Arialの場合は機能しません。しかし、Helvetica-BoldObliqueのために機能しています。UIFontのドキュメントはこちらiphonedevwiki.net/index.php/UIFont
sudip

1
「Arial」ではなく「HelveticaNeue」を意味します:)
jpmartineau 2013年

カスタムフォントを追加するとどうなりますか?
Majid Bashir

6

iOS 7のシステムデフォルトフォントでは、システムデフォルトフォントを維持したい場合は、helvetica neue boldを使用します。

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];

または、単にそれを呼び出すことができます:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];

6

スウィフト3

大胆な:

let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)

イタリック:

let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)


3
 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

あなたもこれを使用して太字のラベル/ボタンフォントを行うことができます


3

特性を追加または削除できるマクシミリアンウォジャコウスキーの応答のバリエーションを作成しました

extension UIFont {

    func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(  self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func bold() -> UIFont {
        return withTraits( .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(.traitItalic)
    }

    func noItalic() -> UIFont {
        return withoutTraits(.traitItalic)
    }
    func noBold() -> UIFont {
        return withoutTraits(.traitBold)
    }
}

label.font = label.font.italic().bold()

セルを再利用し、前のセルのラベルに付けた斜体を削除する場合に便利です


2

私は最近、UIFont APIの制限とそれを解決する方法についてブログ投稿を書きました。こちらご覧いただけます

そこで提供するコードを使用すると、希望するUIFontを次のように簡単に取得できます。

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];

そして、それをあなたのUILabel(または何でも)に設定します: myLabel.font = myFont;


2

これらの回答ですでに述べたように、必要なのは適切なフォント名だけです。私はそれを見つける iOSFonts.comが使用する正確に何名を知るための最も有用なリソースです。


素晴らしいリソース!私はそれを私のiOSデバイスで閲覧し、見栄えの良いフォントを見つけてから、「fontWithName」を使用してそのインスタンスを取得しました。
Markus Knappen Johansson

2

太字の例:

UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];

斜体の例:

UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];

2

@tolbardによって提供された答えは素晴らしく、うまく機能しますが!

たった1行のコードで実現できる拡張機能を作成するのは、やりすぎだと思います。

以下のSwift 4.0を使用した例に示すようにfontプロパティを設定することで、同じテキストに対して太字およびイタリックのスタイルを取得できます。 labelUIFontDescriptor

label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)

その他のオプションは次のとおりです。

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

それらの象徴的な特徴が何を意味するかについての詳細情報は?こちらをご覧ください


2

Maksymilian Wojakowskiのすばやい3の素晴らしい答えを更新する

extension UIFont {
    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
        guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
            return nil
        }
        return UIFont(descriptor: descriptorL, size: 0)
    }

    func boldItalic() -> UIFont? {
        return withTraits(traits: .traitBold, .traitItalic)
    }
}

1

これはとても簡単です。これがコードです。

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

これはあなたを助けます。


それは斜体を設定しません。
mattsson 2016

これは太字のみを設定します。イタリックの場合は、インターフェイスビルダーで使用できます。
2016

1

ただそれを言いたいのですが、

UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)

彼らは異なる結果を持っています...


0

多くの場合、太字のテキストは別のレベルで情報アーキテクチャの方法で見なされるため、1行で太字で規則的ではないため、1つの規則と太字の斜体で2つのラベル/ textViewに分割できます。エディタを使用してフォントスタイルを選択します。


0

スウィフト5

スタイル= BOLD

label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)

スタイル=中

label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)

スタイル=薄い

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.