【问题标题】:Make font bold in iOS 13在 iOS 13 中将字体设置为粗体
【发布时间】:2019-11-17 03:58:14
【问题描述】:

我正在使用以下代码在属性字符串中将字体设为粗体。这曾经可以正常工作,但在 iOS 13 中,它给了我一个粗体 Times 字体而不是系统字体。我知道我可以使用-boldSystemFontOfSize:,但我这样做是为了让任何字体都加粗。我只看到属性字符串的问题。

UIFont *font = [UIFont systemFontOfSize:18];
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:font.fontName size:font.pointSize];     
UIFontDescriptor *styleDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:[fontDescriptor symbolicTraits] | UIFontDescriptorTraitBold];
UIFont *boldFont = [UIFont fontWithDescriptor:styleDescriptor size:font.pointSize];

【问题讨论】:

    标签: ios objective-c ios13 uifont


    【解决方案1】:

    问题是

    fontDescriptorWithName:font.fontName
    

    在 iOS 13 中,禁止尝试通过名称引用系统字体。

    要从字体转换为字体描述符,只需询问字体的fontDescriptor

    https://developer.apple.com/documentation/uikit/uifont/1619037-fontdescriptor

    因此标准模式是(Swift 但我相信你可以翻译)

    let f = UIFont(...
    let desc = f.fontDescriptor 
    let desc2 = desc.withSymbolicTraits(.traitBold) 
    let f2 = UIFont(descriptor: desc2!, size: 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      相关资源
      最近更新 更多