如何在 iOS 模拟器中测试动态类型(更大的字体大小)

How to test Dynamic Type (larger font sizes) in iOS Simulator

可以手动更改 iOS 中的动态类型设置(设置 > 通用 > 辅助功能 > 大文本)。

但这似乎不适用于当前的模拟器(撰写本文时为 v9.3),并且手动执行此操作不是需要自动化的解决方案。

问题:有没有一种方法可以启动具有动态类型设置的应用程序来启动具有更大字体大小的应用程序?

注意:这不仅对 UI 测试有用,而且对于使用 Fastlane Snapshot 创建更大字体的屏幕截图也很有用。

尽管(据我所知)没有记录,启动参数可用于定义初始动态类型设置。

键:UIPreferredContentSizeCategoryName

值:以下之一

  • UICTContentSizeCategoryXS
  • UICTContentSizeCategoryS
  • UICTContentSizeCategoryM
  • UICTContentSizeCategoryL
  • UICTContentSizeCategoryXL
  • UICTContentSizeCategoryXXL
  • UICTContentSizeCategoryXXXL
  • UICTContentSizeCategoryAccessibilityM
  • UICTContentSizeCategoryAccessibilityL
  • UICTContentSizeCategoryAccessibilityXL
  • UICTContentSizeCategoryAccessibilityXXL
  • UICTContentSizeCategoryAccessibilityXXXL

此未记录 key/values 的来源:GitHub

一个方便的方法是向 Xcode 方案添加启动参数(例如在启动时传递的参数下添加 -UIPreferredContentSizeCategoryName UICTContentSizeCategoryXL),当您 运行 Xcode 中的应用程序。您可以创建多个具有不同动态类型设置的方案以在它们之间切换。

如果目的是使用Fastlane Snapshot创建屏幕截图,等效代码如下:

app.launchArguments += [ "-UIPreferredContentSizeCategoryName", "UICTContentSizeCategoryXL" ]
app.launch()

从 iOS 10 开始,可以使用 UITraitCollection API 动态更改动态类型选择。有关详细信息,请参阅

从 Xcode 8 开始,有一个比未记录的启动参数更好的选项:Accessibility Inspector。它包含在 this talk 中,可以在 Xcode > Open Developer Tool 下找到。

Xcode11+

更新

有一个新的环境覆盖选项。在 .

中查找更多信息

在辅助功能检查器中执行此操作之前,请不要忘记在模拟设备的设置中打开 "Larger Text":常规 -> 辅助功能 -> 大字体。否则,辅助功能检查器将不会显示动态字体选项。

实际上可以在应用程序级别覆盖内容类别大小,这对单元测试和 UI 测试特别有用。

在这里查看:https://medium.com/livefront/practical-dynamic-type-part-2-testing-613bb845f26b