ios - 什么时候正确设置尺码等级?

标签 ios size-classes uitraitcollection

我正在尝试在单元测试中测试一些尺寸类别的特定特征,但遇到了一个问题,即尺寸类别在 awakeFromNib 中未正确设置。当我运行应用程序时,在屏幕上显示所有内容后,通过在 LLDB 中检查它来正确设置它,但在进行单元测试时我似乎永远无法触发正在设置的大小类。

有人知道何时设置特征集合/如何触发它吗?

编辑:为了清楚起见,这些单元测试只是测试 View ,而不是测试它所在的 ViewController。所以我从它的 Nib 加载 View ,然后对其执行测试。

我尝试调用 layoutSubviews() 希望这会触发某种尺寸类别设置,但它不起作用。当我在 traitCollectionDidChange 中放置断点时,堆栈跟踪中只有 main,因此我不确定实际触发它的是什么。

最佳答案

我明白了。关键是 View 需要成为窗口的一部分才能更新其大小类别,因此以下代码纠正了这种情况:

let window = UIWindow()

// "view" is the view you want the size class updated one
window.addSubview(view) 

关于ios - 什么时候正确设置尺码等级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42447162/

相关文章:

ios - 如何检测我的 AppDelegate 中的暗/亮模式更改以重置全局 tintColor?

swiftui - 如何检测iOS 13中浅\暗模式的变化?

ios - 如何将我的 iOS/Swift 项目转换为可以使用实时 View 的状态?

ios - 针对特定集合的多对多关系核心数据查询

ios - 大小类为 : Different spacing depending on iPhone screen size 的自动布局

swift - 当 Swift 中的 textView 必须适合整个屏幕时,如何正确调整它的大小?

ios - 如何设置状态栏或安全区域以去除 iPhone X 上的空白?

ios - 自动布局不起作用?

ios - 在 Storyboard (iOS) 中添加/删除特定大小类的约束

ios8 - 当另一个 View Controller 显示在它上面时,UIPresentationController 会改变大小