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