Мое приложение поддерживает динамические шрифты. Когда пользователь изменяет размер шрифта в настройках (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"
)
}