gpt4 book ai didi

ios - Xcode 6 Size Classes 中的自定义字体大小无法与自定义字体一起正常工作

转载 作者:IT王子 更新时间:2023-10-29 07:29:08 31 4
gpt4 key购买 nike

Xcode 6 有一项新功能,字体字体大小UILabelUITextFieldUIButton 可以根据当前设备配置的大小类自动设置,就在 Storyboard 中。例如,您可以将 UILabel 设置为在“任意宽度、紧凑高度”(例如横向 iPhone)配置上使用 12 号字体,在“常规宽度、常规高度”配置上使用 18 号字体(例如在 iPad 上)。此处提供了更多信息:

developer.apple.com/size_class

这在理论上是一项很棒的功能,因为它可以让您无需根据设备配置以编程方式在 UI 功能上设置不同的字体。现在,我有一些条件代码可以根据设备类型设置字体,但显然,这意味着我必须在整个应用程序的任何地方以编程方式设置字体。所以我最初对这个功能非常兴奋,但我发现它对我的实际使用有严重的问题(可能是一个错误)。请注意,我是针对 SDK 8 构建的,并设置了 iOS 8 的最低部署目标,因此这与与旧版本 iOS 的兼容性无关。

问题是这样的:如果我为不同的大小类别设置不同的字体大小并使用 iOS 提供的“系统”字体,一切都会按预期工作,并且字体大小会根据大小类别而变化.如果我使用我的应用程序提供的自定义字体(是的,我在我的应用程序包中正确设置了它,因为它以编程方式工作)并在 XCode 中将自定义字体设置为 label 6 个 Storyboard,也按预期工作。但是当我尝试为不同大小的类使用不同大小的自定义字体时,在 Storyboard中,它突然不起作用。配置的唯一区别是我选择的字体(自定义字体与系统字体)。相反,所有字体都以默认大小作为默认系统字体显示在设备和模拟器上,无论大小类别(和我通过调试器验证它正在用系统字体替换 Storyboard 中指定的实际字体)。所以基本上,自定义字体的大小类功能似乎被破坏了。此外,有趣的是,自定义字体实际上在 View Controller 的 XCode 6“预览” Pane 中正确显示和调整大小:它仅在实际 iOS 系统上运行时停止工作(这让我认为我正在正确配置它) .

我尝试了多种不同的自定义字体,但似乎对其中任何一种都不起作用,但如果我改用“系统”,它总是有效。

无论如何,还有其他人在 Xcode 6 中看到过这个问题吗?

关于这是否是 iOS 8、Xcode 或其他方面的错误的任何想法

我做错了吗?

正如我所说,我发现的唯一解决方法是继续以编程方式设置字体,就像我对大约三个 iOS 版本所做的那样,因为它确实有效。

但如果我能让它与自定义字体一起使用,我很乐意能够使用此功能。我们的设计不接受使用系统字体。


附加信息:从 Xcode 8.0 开始,该错误已修复。

最佳答案

快速修复:

1) 将字体设置为 System for size classes

Label attributes inspector

2) 继承 UILabel 并覆盖“layoutSubviews”方法,如:

- (void)layoutSubviews
{
[super layoutSubviews];

// Implement font logic depending on screen size
if ([self.font.fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location == NSNotFound) {
NSLog(@"font is not bold");
self.font = [UIFont fontWithName:@"Custom regular Font" size:self.font.pointSize];
} else {
NSLog(@"font is bold");
self.font = [UIFont fontWithName:@"Custom bold Font" size:self.font.pointSize];
}

}

顺便说一句,这是一个非常方便的标志性字体技术

关于ios - Xcode 6 Size Classes 中的自定义字体大小无法与自定义字体一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166737/

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