【发布时间】:2019-03-25 10:31:19
【问题描述】:
我的应用程序支持动态字体。当用户在设置中更改字体大小 (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"
)
}
【问题讨论】:
-
下面的答案能解决你的问题吗?
-
是的。谢谢你:)
标签: ios swift unit-testing