Come posso impostare grassetto e corsivo su UILabel
iPhone / iPad? Ho cercato nel forum ma niente mi ha aiutato. Qualcuno può aiutarmi?
Come posso impostare grassetto e corsivo su UILabel
iPhone / iPad? Ho cercato nel forum ma niente mi ha aiutato. Qualcuno può aiutarmi?
Risposte:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
C'è un elenco di nomi di font che puoi impostare al posto dell'attributo 'fontWithName'. Il link è qui
Non provare a giocare con i nomi dei caratteri. Usando il descrittore di font non hai bisogno di nomi:
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
significa "mantieni le dimensioni così come sono"
Con Swift prova la seguente estensione:
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)
}
}
Quindi puoi usarlo in questo modo:
myLabel.font = myLabel.font.boldItalic()
o anche aggiungere tratti aggiuntivi come 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
Usalo come segue:
myLabel.font = myLabel.font.bold
o
myLabel.font = myLabel.font.italic
o
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)
probabilmente dovrebbe return withTraits(.TraitBold, .TraitItalic)
corrispondere al nome della funzione.
@Edinator dai un'occhiata a questo ..
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
utilizzare una delle opzioni precedenti in qualsiasi momento
Puoi impostare qualsiasi tipo di carattere, famiglia, dimensione per l'etichetta, facendo clic sulla lettera "T" nel campo Carattere .
Ho lo stesso problema che devo applicare sia Grassetto che Corsivo su un'etichetta e un pulsante. Puoi semplicemente usare il seguente codice per ottenere questo effetto:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
Con il font predefinito di sistema iOS 7, helvetica neue sarà in grassetto se stai cercando di mantenere il font predefinito di sistema.
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
Oppure puoi semplicemente chiamarlo:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
Swift 3
Grassetto:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
Corsivo:
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];
puoi usare il carattere grassetto etichetta / pulsante anche usando questo
Ho fatto una variazione della risposta del wojakowski maksymilian in cui è possibile aggiungere o rimuovere un tratto (i)
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)
}
}
exemple
label.font = label.font.italic().bold()
è utile quando riutilizzi la cella e vuoi rimuovere il corsivo che hai messo su un'etichetta in una cella precedente
Di recente ho scritto un post sul blog sulle restrizioni dell'API UIFont e su come risolverlo. Puoi vederlo qui
Con il codice che fornisco lì, puoi ottenere il tuo UIFont desiderato come:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
E poi impostalo sul tuo UILabel (o qualsiasi altra cosa) con:
myLabel.font = myFont;
Come è già stato menzionato in queste risposte, hai solo bisogno del nome del font giusto . Trovo che iOSFonts.com sia la risorsa più utile per sapere esattamente quale nome usare.
Esempio di testo in grassetto:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];
Esempio di testo in corsivo:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
Anche se la risposta fornita da @tolbard è sorprendente e funziona bene!
Sento che la creazione di un'estensione per qualcosa che può essere ottenuto in una sola riga di codice, sarebbe un'eccessiva uccisione.
Puoi ottenere uno stile grassetto e corsivo per lo stesso testo nel tuo label
impostando la proprietà font usando UIFontDescriptor
come mostrato nell'esempio sotto usando Swift 4.0 :
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
Altre opzioni includono:
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
Per ulteriori informazioni su cosa significano quei tratti simbolici? visita qui
Aggiornamento della fantastica risposta di Maksymilian Wojakowski per 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)
}
}
Molte volte il testo in grassetto è considerato in un modo di architettura dell'informazione su un altro livello e quindi non è in grassetto e regolare in una riga, quindi puoi dividerlo in due etichette / textView, uno normale e in grassetto corsivo. E usa l'editor per scegliere gli stili dei caratteri.