我的应用程序支持动态字体。当用户在设置中更改字体大小(设置 > 常规 > 辅助功能 > 较大文本
)并跳回应用程序时,每个标签都应该更新。
通过重写UILabel的函数来实现
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
guard previousTraitCollection?.preferredContentSizeCategory != traitCollection.preferredContentSizeCategory else { return }
let metrics: UIFontMetrics = UIFontMetrics(
forTextStyle: UIFont.TextStyle.body
)
font = metrics.scaledFont(for: font)
}
现在我需要测试其他 View 是否对标签的动态特性做出正确 react 。
具体来说,我想要进行以下单元测试:
- 创建带标签的 View
- 获取 View 大小
- 将系统字体更改为更大
- 获取 View 大小
- 比较尺寸是否发生变化
func testDynamicFont() {
let v: MyView = MyView()
let oldSize: CGSize = v.intrinsicContentSize
??? What to do here? ???
let newSize: CGSize = v.intrinsicContentSize
XCTAssertNotEqual(
oldSize,
newSize,
"Size of view should adjust to new environment"
)
}
最佳答案
您可以使用以下代码增加系统字体大小。
let settings = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
settings.launch()
settings.tables.staticTexts["General"].tap()
settings.tables.staticTexts["Accessibility"].tap()
settings.tables.staticTexts["Larger Text"].tap()
settings.sliders.element.adjust(toNormalizedSliderPosition: 0.7) // Increase as you need
要返回您自己的应用程序,
let yourapp = XCUIApplication(bundleIdentifier: "com.xxx.yourappbundleid")
yourapp.activate()
在 iPhone(真实设备)、iOS 12.1.4 中测试
关于ios - 如何在单元测试期间以编程方式编辑 iPhone 辅助功能设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335786/