Wie stelle ich Fett und Kursiv auf UILabel von iPhone / iPad ein?


Antworten:


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

Es gibt eine Liste von Schriftnamen, die Sie anstelle des Attributs 'fontWithName' festlegen können. Der Link befindet sich hier


5
Bessere Antwort ist die mit der Erweiterungsmethode .withTraits () von @Maksymilian Wojakowski
Keine Rückerstattung Keine Rückgabe

Sir Sir, wie man den Textbox-Stil fett setzt, ohne das
Größenziel anzugeben.

3
Dies ist problematisch, da Sie einen festen Schriftnamen verwenden. Da sich dies ändern kann, ist dies keine gute Lösung. Die Antwort von Maksymilian Wojakowski ist besser und weitaus flexibler.
Ray Wojciechowski

274

Versuchen Sie nicht, mit den Schriftnamen zu spielen. Mit dem Font Deskriptor benötigen Sie keine Namen:

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 bedeutet "Größe beibehalten wie sie ist"

Versuchen Sie mit Swift die folgende Erweiterung:

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)
    }

}

Dann können Sie es folgendermaßen verwenden:

myLabel.font = myLabel.font.boldItalic()

oder fügen Sie sogar zusätzliche Merkmale wie Condensed hinzu:

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

Update für 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

Verwenden Sie es wie folgt:

myLabel.font = myLabel.font.bold

oder

myLabel.font = myLabel.font.italic

oder

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

Update für 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
Ich weiß nicht, warum dies nicht mehr Stimmen erhalten hat! Für Schriftarten, bei denen Sie keinen fetten oder kursiven Stil haben, ist dies großartig!
Chris Prince

4
Ähhh. Ich verstehe, warum das vielleicht nicht so beliebt ist. Nur in iOS7 und höher verfügbar ...
Chris Prince

3
Ich weiß nicht, ob dies unter NDA berücksichtigt werden sollte, aber mit Xcode6- und iOS8-GM-Seed erhalte ich einen Null-Schriftdeskriptor für eine benutzerdefinierte Schrift zurück, bei der es unter iOS7 nicht Null war.
Chris Prince

@Maksymilian können wir diese Methode irgendwo in mehreren Labels ablehnen, dh: uitableview
Majid Bashir

2
Nur eine kurze Anmerkung, da diese Antwort so hilfreich ist: return withTraits(.TraitBold, .TraitCondensed)sollte wahrscheinlich return withTraits(.TraitBold, .TraitItalic)mit dem Funktionsnamen übereinstimmen.
BreadicalMD

103

@Edinator schau dir das an ..

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

Verwenden Sie eine der oben genannten Optionen zu einem von Ihnen gewünschten Zeitpunkt


1
Die beiden Stile funktionieren nicht. In diesem Fall herrscht letzterer kursiv vor. Danke für die Antwort!
Edi

@Edinator yups Ich weiß, dass Sie immer nur einen verwenden müssen ... Ich hatte auch meine Antwort bearbeitet!
Sudhanshu

8

Sie können einen beliebigen Schriftstil, eine beliebige Schriftart und eine beliebige Schriftgröße für die Beschriftung festlegen, indem Sie im Feld Schriftart auf den Buchstaben "T" klicken .

Beschriften Sie die Schriftarteneinstellungen


Aber hier ist die große Frage, neben der Verwendung von fontWithName: @ "Arial-Light", wie geben Sie die anderen Gewichte in Ihrem Screenshot an? Alles bringt Fettdruck auf SystemSontSize (von: __), aber was ist, wenn jemand Licht oder Ultraleicht will?
Dave G

6

Ich habe das gleiche Problem, bei dem sowohl Fett als auch Kursiv auf ein Etikett und eine Schaltfläche angewendet werden müssen. Sie können einfach folgenden Code verwenden, um diesen Effekt zu erzielen:

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

1
Ich denke, du
meintest

Für Arial funktioniert es nicht. Aber es funktioniert für Helvetica-BoldOblique. Siehe die UIFont-Dokumentation hier iphonedevwiki.net/index.php/UIFont
sudip

1
Du meinst "HelveticaNeue", nicht "Arial" :)
jpmartineau

Was ist, wenn wir unsere benutzerdefinierte Schriftart hinzufügen?
Majid Bashir

6

Mit der Standardschriftart des iOS 7-Systems verwenden Sie helvetica neue fett, wenn Sie die Standardschriftart des Systems beibehalten möchten.

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

Oder Sie können es einfach nennen:

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

6

Swift 3

Fett gedruckt:

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

Kursiv:

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];

Sie können damit auch fett gedruckte Beschriftungs- / Schaltflächenschriften erstellen


3

Ich habe eine Variation der Reaktion von maksymilian wojakowski vorgenommen, bei der Sie ein oder mehrere Merkmale hinzufügen oder entfernen können.

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)
    }
}

Beispiel

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

Dies ist nützlich, wenn Sie eine Zelle wiederverwenden und die Kursivschrift entfernen möchten, die Sie auf einem Etikett in einer vorherigen Zelle angebracht haben


2

Ich habe kürzlich einen Blog-Beitrag über die Einschränkungen der UIFont-API und deren Lösung geschrieben. Sie können es hier sehen

Mit dem Code, den ich dort zur Verfügung stelle, können Sie Ihr gewünschtes UIFont so einfach erhalten wie:

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

Und setzen Sie es dann auf Ihr UILabel (oder was auch immer) mit: myLabel.font = myFont;


2

Wie bereits in diesen Antworten erwähnt, benötigen Sie nur den richtigen Schriftnamen . Ich finde, dass iOSFonts.com die hilfreichste Ressource ist, um genau zu wissen, welcher Name verwendet werden soll.


Tolle Ressource! Ich habe es auf meinem iOS-Gerät durchsucht, eine gut aussehende Schriftart gefunden und dann "fontWithName" verwendet, um eine Instanz davon abzurufen.
Markus Knappen Johansson

2

Beispiel Fettgedruckter Text:

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

Beispiel Kursiver Text:

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

2

Obwohl die Antwort von @tolbard erstaunlich ist und gut funktioniert!

Ich denke, eine Erweiterung für etwas zu erstellen, das in nur einer Codezeile erreicht werden kann, wäre ein Over-Kill.

Sie können sowohl Fettdruck als auch Kursivdruck für denselben Text in Ihrem Text erstellen, labelindem Sie die Schrifteigenschaft UIFontDescriptorwie unten im folgenden Beispiel gezeigt mit Swift 4.0 einrichten :

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

Weitere Optionen sind:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

Weitere Informationen darüber, was diese symbolischen Merkmale bedeuten? Besuche hier


2

Aktualisierung von Maksymilian Wojakowskis großartiger Antwort für Swift 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

Das ist sehr einfach. Hier ist der Code.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Das wird dir helfen.


Das ist nicht kursiv gesetzt.
Mattsson

Dies wird nur fett gesetzt. Für Kursiv können Sie von Interface Builder verwenden.
Ashu

1

Ich möchte das nur erwähnen,

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

Sie haben unterschiedliche Ergebnisse ...


0

Oft wird der fettgedruckte Text auf einer anderen Ebene in einer Informationsarchitektur betrachtet und ist daher nicht fett und regelmäßig in einer Zeile, sodass Sie ihn in zwei Beschriftungen / Textansichten aufteilen können, eine reguläre und eine fett kursiv gedruckte. Verwenden Sie den Editor, um die Schriftstile auszuwählen.


0

Mit Swift 5

Für Stil = Fett

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

Für Stil = Mittel

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

Für Stil = Dünn

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.