如果我有一个UIFont对象,是否可以将其转换为粗体?我不知道字体名称,我只有一个UIFont对象。我想要的是像这样的函数
UIFont *boldFontFromFont(UIFont *input)
{
return [input derivedFontWithFontWeight:UIFontWeightBold];
}如何更改代码以使其正常工作。(上面的代码不起作用,我只是为了说明这一点而虚构的。)
提前谢谢。
发布于 2013-04-15 21:23:45
要获得粗体字体,您需要从字体系列中传递字体的特定名称。您可以从给定的字体中获取字体系列名称,然后列出该系列中的所有字体。一般来说,粗体字体的名称中会包含“粗体”,但格式并不严格,可能会有像"Helvetica-BoldOblique“这样的变体。您可以从以下代码开始:
- (UIFont *)boldFontFromFont:(UIFont *)font
{
NSString *familyName = [font familyName];
NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
for (NSString *fontName in fontNames)
{
if ([fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location != NSNotFound)
{
UIFont *boldFont = [UIFont fontWithName:fontName size:font.pointSize];
return boldFont;
}
}
return nil;
}发布于 2014-01-27 00:44:40
iOS 7引入了一个新的UIFontDescriptor类,这使得它变得更容易:
UIFont *font = [UIFont fontWithName:@"Helvetica Neue" size:12];
NSLog(@"plain font: %@", font.fontName); // “HelveticaNeue”
UIFont *boldFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold] size:font.pointSize];
NSLog(@"bold version: %@", boldFont.fontName); // “HelveticaNeue-Bold”
UIFont *italicFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic] size:font.pointSize];
NSLog(@"italic version: %@", italicFont.fontName); // “HelveticaNeue-Italic”
UIFont *boldItalicFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic] size:font.pointSize];
NSLog(@"bold & italic version: %@", boldItalicFont.fontName); // “HelveticaNeue-BoldItalic”对于那些在这里寻找Cocoa (macOS)等价物的人来说,UIFontDescriptor来自NSFontDescriptor,从10.3开始就可以使用了。
发布于 2014-11-20 12:59:59
如果您正在寻找swift implementation
let normalFont = UIFont(name: "FONT_NAME", size: CGFloat(20))!
let boldFont = UIFont(descriptor: normalFont.fontDescriptor.withSymbolicTraits(.traitBold)!, size: normalFont.pointSize)希望这能有所帮助!干杯!
https://stackoverflow.com/questions/16015916
复制相似问题