Respuestas:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
Hay una lista de nombres de fuentes que puede establecer en lugar del atributo 'fontWithName'. El enlace está aquí
No intentes jugar con los nombres de las fuentes. Usando el descriptor de fuente no necesita nombres:
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 'mantener el tamaño como está'
Con Swift prueba la siguiente extensión:
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)
}
}
Entonces puede usarlo de esta manera:
myLabel.font = myLabel.font.boldItalic()
o incluso agregar rasgos adicionales como 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
Úselo de la siguiente manera:
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)
probablemente debería return withTraits(.TraitBold, .TraitItalic)
coincidir con el nombre de la función.
@Edinator echa un vistazo a esto ...
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
use cualquiera de los anteriores a la hora que desee
Puede establecer cualquier estilo de fuente, familia, tamaño para la etiqueta, haciendo clic en la letra "T" en el campo Fuente .
Tengo el mismo problema que necesito aplicar tanto negrita como cursiva en una etiqueta y botón. Simplemente puede usar el siguiente código para lograr este efecto:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
Con la fuente predeterminada del sistema iOS 7, usará helvetica neue bold si desea mantener la fuente predeterminada del sistema.
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
O simplemente puede llamarlo:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
Swift 3
Negrita:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
Itálico:
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];
puedes hacer una fuente de etiqueta / botón en negrita también usando esto
Hice una variación de la respuesta de maksymilian wojakowski donde puedes agregar o eliminar un rasgo (s)
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)
}
}
ejemplo
label.font = label.font.italic().bold()
es útil al reutilizar la celda y desea eliminar la cursiva que puso en una etiqueta en una celda anterior
Recientemente escribí una publicación de blog sobre las restricciones de la API de UIFont y cómo resolverla. Puedes verlo aquí
Con el código que proporciono allí, puede obtener su UIFont deseado tan fácil como:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
Y luego configúrelo en su UILabel (o lo que sea) con:
myLabel.font = myFont;
Como ya se mencionó en estas respuestas, solo necesita el nombre de fuente correcto . Encuentro que iOSFonts.com es el recurso más útil para saber exactamente qué nombre usar.
Ejemplo de texto en negrita:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];
Ejemplo de texto en cursiva:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
¡Aunque la respuesta proporcionada por @tolbard es increíble y funciona bien!
Siento que crear una extensión para algo que se puede lograr con solo una línea de código sería una matanza excesiva.
Puede obtener un estilo en negrita y cursiva para el mismo texto en su label
configurando la propiedad de fuente usando UIFontDescriptor
como se muestra a continuación en el ejemplo a continuación usando Swift 4.0 :
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
Otras opciones incluyen:
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
Para obtener más información sobre lo que significan esos rasgos simbólicos? visitar aquí
Actualizando la increíble respuesta de Maksymilian Wojakowski para 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)
}
}
Muchas veces, el texto en negrita se considera de manera arquitectónica de la información en otro nivel y, por lo tanto, no tiene negrita y regular en una línea, por lo que puede dividirlo en dos etiquetas / vistas de texto, una regular y en negrita y cursiva. Y use el editor para elegir los estilos de fuente.