Odpowiedzi:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
Istnieje lista nazw czcionek, które można ustawić zamiast atrybutu „fontWithName”. Link znajduje się tutaj
Nie próbuj bawić się nazwami czcionek. Używając deskryptora czcionki, nie potrzebujesz nazw:
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
oznacza „zachowaj rozmiar bez zmian”
W Swift wypróbuj następujące rozszerzenie:
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)
}
}
Następnie możesz użyć tego w ten sposób:
myLabel.font = myLabel.font.boldItalic()
lub nawet dodaj dodatkowe cechy, takie jak Condensed:
myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
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
Użyj go w następujący sposób:
myLabel.font = myLabel.font.bold
lub
myLabel.font = myLabel.font.italic
lub
myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])
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)
}
}
return withTraits(.TraitBold, .TraitCondensed)
prawdopodobnie powinno return withTraits(.TraitBold, .TraitItalic)
pasować do nazwy funkcji.
@Edinator spójrz na to ..
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
użyj dowolnego z powyższych w dowolnym momencie
Możesz ustawić dowolny styl, rodzinę i rozmiar czcionki dla etykiety, klikając literę „T” w polu Czcionka .
Mam ten sam problem, który wymaga zastosowania pogrubienia i kursywy na etykiecie i przycisku. Aby osiągnąć ten efekt, możesz po prostu użyć następującego kodu:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
Dzięki domyślnej czcionce systemu iOS 7 będziesz używać helvetica neue bold, jeśli chcesz zachować domyślną czcionkę systemu.
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
Lub możesz to po prostu nazwać:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
Szybki 3
Pogrubienie:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
Italski:
let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)
btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
btn.titleLabel.font = [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];
możesz również użyć tej pogrubionej czcionki etykiety / przycisku
Zrobiłem wariację odpowiedzi Maksymiliana Wojakowskiego, w której możesz dodać lub usunąć cechę (-y)
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)
}
}
przykład
label.font = label.font.italic().bold()
przydaje się przy ponownym użyciu komórki i chcesz usunąć kursywę, którą umieściłeś na etykiecie w poprzedniej komórce
Niedawno napisałem wpis na blogu o ograniczeniach API UIFont i sposobach ich rozwiązania. Możesz to zobaczyć tutaj
Dzięki kodowi, który tam podaję, możesz uzyskać pożądany UIFont tak łatwo, jak:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
A następnie ustaw go na swój UILabel (lub cokolwiek) za pomocą:
myLabel.font = myFont;
Jak już wspomniano w tych odpowiedziach, potrzebujesz tylko odpowiedniej nazwy czcionki . Uważam, że iOSFonts.com jest najbardziej pomocnym źródłem informacji o tym, jakiej nazwy należy użyć.
Przykład pogrubiony tekst:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];
Przykładowy tekst kursywą:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
Chociaż odpowiedź udzielona przez @tolbard jest niesamowita i działa dobrze!
Wydaje mi się, że tworzenie rozszerzenia czegoś, co można osiągnąć w jednej linii kodu, byłoby przesadą.
Możesz uzyskać pogrubienie i kursywę dla tego samego tekstu w swoim label
, ustawiając właściwość czcionki, UIFontDescriptor
jak pokazano poniżej w poniższym przykładzie, używając Swift 4.0 :
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
Inne opcje obejmują:
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
Aby uzyskać więcej informacji o tym, co oznaczają te cechy symboliczne? odwiedź tutaj
Aktualizacja wspaniałej odpowiedzi Maksymiliana Wojakowskiego na 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)
}
}
Często pogrubiony tekst jest traktowany jako architektura informacji na innym poziomie, a zatem nie ma pogrubionego i regularnego w jednej linii, więc można go podzielić na dwie etykiety / textViews, jedną zwykłą i pogrubioną kursywą. I użyj edytora, aby wybrać style czcionek.