iphone - ttf - uifont custom font
Cómo obtener el tamaño de fuente o una versión en negrita de la instancia de UIFont (7)
Esta es la forma más fácil de encontrar el tamaño de fuente
UIFont *anyFont;
//initialization and other stuff here
Ahora en algún momento quieres encontrar su tamaño
CGFloat fontSize= [anyFont pointSize];
¿Cómo obtener el tamaño de fuente de una instancia de UIFont?
O, si alguien puede implementar este método para UIFont?
- (UIFont *)boldFont;
Para acceder al tamaño de fuente desde tu instancia de UIFont usa
@property(nonatomic, readonly) CGFloat pointSize
Hay más propiedades para decir el tamaño de la fuente (para el límite, pequeño, etc.)
capHeight,xHeight,pointSize
Use debajo para acceder a la fuente en negrita
UIFont* myboldFont = [UIFont boldSystemFontOfSize:11];
Puede verificar en negrita con Core Text. Use kCTFontBoldTrait
.
Swift 3 versión de la share rafał-augustyniak
extension UIFont {
func boldFont() -> UIFont? {
let fontDescriptor = self.fontDescriptor
let fontDescriptorSymbolicTraits: UIFontDescriptorSymbolicTraits = [ fontDescriptor.symbolicTraits, .traitBold ]
guard let boldFontDesc = fontDescriptor.withSymbolicTraits(fontDescriptorSymbolicTraits) else {
return nil
}
return UIFont(descriptor: boldFontDesc, size: pointSize)
}
}
Use los métodos NSString+UIKit para medir el tamaño de una cadena con una fuente determinada.
El iPhone trata las fuentes normales y en negrita del mismo nombre como fuentes completamente separadas, y como tal, no hay una forma sencilla de convertirlas. Por ejemplo, ArialMT y Arial-BoldMT se consideran fuentes completamente diferentes por el sistema operativo.
EDIT: es posible que haya malentendido tu pregunta. ¿Quizás estás buscando la propiedad pointSize de UIFont?
UIFontDescriptor
es una clase bastante poderosa y se puede utilizar para obtener la versión en negrita de la fuente que desee. Debe ser totalmente seguro y estar a prueba en el futuro, ya que solo requiere el uso de API pública y no depende de ninguna modificación de cadena.
Aquí está el código en Swift 3:
extension UIFont {
func bold() -> UIFont? {
let fontDescriptorSymbolicTraits: UIFontDescriptorSymbolicTraits = [fontDescriptor.symbolicTraits, .traitBold]
let bondFontDescriptor = fontDescriptor.withSymbolicTraits(fontDescriptorSymbolicTraits)
return bondFontDescriptor.flatMap { UIFont(descriptor: $0, size: pointSize) }
}
}
Aquí está el código en Objective-C:
@implementation UIFont (RABoldFont)
- (UIFont *)ra_boldFont
{
UIFontDescriptor *fontDescriptor = [self fontDescriptor];
UIFontDescriptorSymbolicTraits traits = fontDescriptor.symbolicTraits;
traits = traits | UIFontDescriptorTraitBold;
UIFontDescriptor *boldFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:traits];
return [UIFont fontWithDescriptor:boldFontDescriptor size:self.pointSize];
}
@end
Esta es una respuesta antigua y ya no es la mejor solución. Consulte la respuesta aceptada.
-(UIFont *)boldFont{
//First get the name of the font (unnecessary, but used for clarity)
NSString *fontName = self.fontName;
//Some fonts having -Regular on their names. so we have to remove that before append -Bold / -BoldMT
fontName = [[fontName componentsSeparatedByString:@"-"] firstObject];
//Then append "-Bold" to it.
NSString *boldFontName = [fontName stringByAppendingString:@"-Bold"];
//Then see if it returns a valid font
UIFont *boldFont = [UIFont fontWithName:boldFontName size:self.pointSize];
//If it''s valid, return it
if(boldFont) return boldFont;
//Seems like in some cases, you have to append "-BoldMT"
boldFontName = [fontName stringByAppendingString:@"-BoldMT"];
boldFont = [UIFont fontWithName:boldFontName size:self.pointSize];
//Here you can check if it was successful, if it wasn''t, then you can throw an exception or something.
return boldFont;
}