Xcode 6有一个新功能,其中字体和字体大小为UILabel
、UITextField
和 ,并且UIButton
可以根据当前设备配置的大小类别自动设置,就在故事板中。例如,您可以将 a 设置为UILabel
在“任意宽度、紧凑高度”(例如横向 iPhone)配置中使用字体大小 12,在“常规宽度、常规高度”配置(例如在iPad上)使用字体大小 18。更多信息请点击这里:
developer.apple.com/size_class
这在理论上是一个很棒的功能,因为它可以使您无需根据设备配置以编程方式在 UI 功能上设置不同的字体。现在,我有一些条件代码可以根据设备类型设置字体,但显然,这意味着我必须在整个应用程序的任何地方以编程方式设置字体。所以我一开始对这个功能非常兴奋,但我发现它对我来说在实际使用中存在严重问题(可能是一个错误)。请注意,我正在针对SDK 8构建并设置iOS 8的最小部署目标,因此这与与旧版本 iOS 的兼容性无关。
问题是这样的: 如果我为不同的大小类设置不同的字体大小并使用iOS提供的“系统”字体,一切都会按预期工作,并且字体大小会根据大小类而变化。如果我使用我的应用程序提供的自定义字体(是的,我在我的应用程序包中正确设置了它,因为它以编程方式工作)并将自定义字体设置为XCode 6 故事板中的标签,这也可以按预期工作。但是当我尝试为不同大小的类使用不同大小的自定义字体时,在情节提要中,它突然不起作用。配置的唯一区别是我选择的字体(自定义字体与系统字体)。相反,所有字体都显示在设备和模拟器作为默认大小的默认系统字体,不管大小类(我通过调试器验证它正在用系统字体替换情节提要中指定的实际字体)。所以基本上,自定义字体的大小类功能似乎被破坏了。此外,有趣的是,自定义字体实际上在视图控制器的 XCode 6“预览”窗格中正确显示和调整大小:它仅在实际 iOS 系统上运行时才停止工作(这让我认为我正在正确配置它) .
我尝试了多种不同的自定义字体,但似乎对它们中的任何一种都不起作用,但如果我使用“系统”来代替,它总是有效的。
无论如何,有没有其他人在Xcode 6中看到过这个问题?
关于这是否是 iOS 8、Xcode 或其他错误的任何想法
我做错了吗?
正如我所说,我发现的唯一解决方法是继续以编程方式设置字体,就像我在大约三个 iOS 版本中所做的那样,因为这确实有效。
但如果我可以让它与自定义字体一起使用,我很想能够使用这个功能。我们的设计不接受使用系统字体。
附加信息: 从 Xcode 8.0 开始,该错误已修复。