我正在开发的应用程序中(适用于iOS13及以上版本的SwiftUI),我导入了自定义字体,并使用以下方法加载该字体:
func getDigitalXFontOfSize(size s : CGFloat) -> Font {
return Font.custom("DigitalX", size: s);
}
我在一个视图中有一个Text对象如下:
let font : Font = FontGetter.getDigitalXFontOfSize(20.0);
var body: some View {
HStack {
Text("some text").font(FontGetter)
}
}
在iOS中,有选项可以在设置中更改字体大小,它说:“支持动态类型的应用将调整为您所选择的阅读大小”。据我所知,SwiftUI中的文本视图会根据动态类型值自动采用动态缩放字体。现在我明白无障碍性非常重要,如果用户想要更大的字体,他们应该能够获得等等。我的应用程序是网络游戏的附加组件,需要特定的布局,不遵循非常大或非常小的文本(例如iOS中可用的“accessibilityExtraExtraExtraLarge”)。
一些应用程序(例如iOS的Reddit应用程序)似乎完全忽略了在“设置”应用程序中设置的文本大小。
当您在设置应用程序中更改文本大小滑块时,文本大小也会更改我的应用程序,这是我不想发生的。
我可以在我的应用程序中关闭动态类型支持,并始终呈现我指定的确切大小的字体吗? 如果可以,如何做到?
我可以为我在应用程序中使用的特定文本视图禁用动态类型吗?
我花了很多时间在SO上搜索类似的问题,但似乎找不到iOS 13及以上或SwiftUI的解决方案。以前的iOS版本(或swift)没有以同样方式创建的自定义字体缩放,但现在它们似乎可以。
编辑版:在iOS 14中,有一个选项可以创建固定字体大小,如下所示:
func getDigitalXFontOfSize(size s : CGFloat) -> Font {
return Font.custom("DigitalX", fixedSize: s);
}
看起来这很有效。但我也需要类似iOS 13的东西。