我的应用程序支持动态字体。当用户更改设置(Settings > General > Accessibility > Larger Text
中的字体大小并跳回到应用程序时,则应该更新每个标签。
它是通过重写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)
}
现在,我需要测试其他视图是否对标签的动态性质做出正确反应。
具体来说,我想进行以下单元测试:
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"
)
}
答案 0 :(得分:1)
您可以使用以下代码来增加系统字体大小。
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中测试