Xcode 11 Beta 中字体样式发生变化的问题

Posted

技术标签:

【中文标题】Xcode 11 Beta 中字体样式发生变化的问题【英文标题】:Font style gets changed issue in Xcode 11 Beta 【发布时间】:2019-06-06 03:05:51 【问题描述】:
    Xcode 11 Beta 中创建新项目或打开现有项目。 使用Plain 文本创建UILabel,并保持系统字体为常规样式。

    将文本类型更改为Attributed字符串并检查字体样式,似乎它随着字体样式的不同而变化并且不保持相同。

PS:Xcode 10 工作正常。

【问题讨论】:

问题解决了吗? 下载并安装 SF Pro 字体,然后简单地从列表中设置。 【参考方案1】:

根据苹果官方文档https://developer.apple.com/fonts/

SF 专业版:

这种无衬线字体是 ios、macOS 和 tvOS 的系统字体, 并包括一个圆形变体。它提供了一致的、清晰的和 友好的排版声音。

SF 紧凑型:

这个无衬线字体是watchOS的系统字体, 并包括一个圆形变体。它适合广泛的内容和 在各种情况下都易于阅读。

所以我们需要下载并安装SF Pro字体,并将UILabel属性字符串字体样式设置为SF Pro Text Regular 18.0,以保持与纯文本相同的字体样式。

希望对您有所帮助!

干杯!

【讨论】:

对不起,我不太明白你的回答。这是否意味着现在我们必须告诉系统使用具有某些字体大小的“SF Pro”而不是使用 UIFont.preferredFont(forTextStyle: .caption1),例如? 其实,是的!在我的特殊情况下,问题不是由 XCode 触发的,它是 Swift Rich String 库的一个错误,所以我只需要更正其源代码中的一行,它就可以工作了。【参考方案2】:

看起来,从 iOS13 和 XCode 11 开始,Apple 将属性字符串的系统字体更改为这种新的、衬线、类似 Times 的字体 :(

(See also here)

我不确定这是故意的还是 iOS 中的错误。我做了一个丑陋的解决方法来处理这个问题:

UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
if (@available(iOS 13, *)) 
    font = [UIFont fontWithName:@"SFUI-Regular" size:[UIFont systemFontSize]];

【讨论】:

谢谢!我不知道发生了什么。

以上是关于Xcode 11 Beta 中字体样式发生变化的问题的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode 11 beta 中选择自定义字体?

未安装自定义字体 - Xcode 11 beta

如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI,Xcode 11 Beta 5)

我现有的 TableViewController 在 Xcode 11 beta1 上崩溃

AppCompatActivity的按钮文本的字体样式已更改

Xcode 8 beta1 下载