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

138

Wie setze ich Fett und Kursiv auf dem UILabeliPhone / iPad? Ich habe das Forum durchsucht, aber nichts hat mir geholfen. Könnte mir jemand helfen?

Edi
quelle
Wenn Sie benutzerdefinierte ohne kursive Schrift verwenden, können Sie [diese Methode ausprobieren.] [1] [1]: stackoverflow.com/questions/21009957/…
Jakehao

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

Mobiler Entwickler iOS Android
quelle
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)
    }
}
Maksymilian Wojakowski
quelle
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

Sudhanshu
quelle
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

ViliusK
quelle
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];
Sogar Cheng
quelle
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]];
John Riselvato
quelle
6

Swift 3

Fett gedruckt:

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

Kursiv:

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

Vyacheslav
quelle
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

Jayesh Kavathiya
quelle
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

Tolbard
quelle
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;

Jordi
quelle
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.

Richard Venable
quelle
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];
Mer
quelle
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

iOSer
quelle
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)
    }
}
devjme
quelle
1

Das ist sehr einfach. Hier ist der Code.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Das wird dir helfen.

Ashu
quelle
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 ...

ysong4
quelle
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.

Patrik Rikama-Hinnenberg
quelle
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)
swiftBoy
quelle