gpt4 book ai didi

ios - 为什么某些 iOS 字体系列不支持 UIFontDescriptorTraitBold?

转载 作者:可可西里 更新时间:2023-11-01 05:34:08 25 4
gpt4 key购买 nike

在给定字体系列名称的情况下,我尝试使用该方法获得粗体 iOS UIFont 似乎仅适用于某些字体。例如:

UIFont* font = [UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
NSLog(@"A: Font name: %@", [font fontName]);

// desired method works for Helvetica Neue
UIFontDescriptor *desc = [[UIFontDescriptor alloc] init];
desc = [desc fontDescriptorWithFamily:@"Helvetica Neue"];
desc = [desc fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
font = [UIFont fontWithDescriptor:desc size:12];
NSLog(@"B: Font name: %@", [font fontName]);

// desired method fails for Times New Roman
desc = [[UIFontDescriptor alloc] init];
desc = [desc fontDescriptorWithFamily:@"Times New Roman"];
NSLog(@"desc: %@", desc);
desc = [desc fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
NSLog(@"desc bold: %@", desc);

打印(在 iOS 8.1 模拟器上):

A: Font name: TimesNewRomanPS-BoldMT
B: Font name: HelveticaNeue-Bold
desc: UICTFontDescriptor <0x7f9be0d05e80> = { NSFontFamilyAttribute = "Times New Roman"; }
desc bold: (null)

这是一个错误,还是它不是设计用于每个字体系列(实际上有一个粗体变体)?我真的不想被迫解析字体名称来寻找“粗体”或类似的东西。

最佳答案

这是一个错误。 fontDescriptorWithSymbolicTraits: 保证返回字体描述符;因此,返回 nil 是意外行为。

事实上,如果你用 Swift 重写同样的东西,它会导致崩溃,因为 desc 不是可选的:

var desc = UIFontDescriptor()
desc = desc.fontDescriptorWithFamily("Times New Roman")
desc = desc.fontDescriptorWithSymbolicTraits(.TraitBold)
println(desc); //crash

UIFontDescriptor 是否会返回一个UIFont 是一个单独的问题。你应该提交一个雷达。

关于ios - 为什么某些 iOS 字体系列不支持 UIFontDescriptorTraitBold?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com