我有一个 UIStackView,它是使用自动布局的位置。当屏幕旋转时,我停用并激活各种约束以将堆栈视图移动到我想要的位置。
我已经使用 Reveal 进行了检查,以确保堆栈视图的位置正确并且是正确的。
在堆栈视图中,我有许多视图,堆栈视图的对齐方式设置为填充,以确保它们扩展以填充堆栈视图的宽度。这工作正常,除了...
当我旋转设备时,然后旋转回原来的方向。然后堆栈视图被正确定位,但其中的视图不是。它们没有填充堆栈视图,而是在侧面留下了一个间隙。通常在 20 到 50 点之间。但在同一设备上总是相同的数量。
这让我很困惑。我发现让堆栈视图正确填充旋转回来的唯一解决方案是:
override func viewDidLayoutSubviews() {
sliders.alignment = UIStackViewAlignment.Bottom
sliders.alignment = UIStackViewAlignment.Fill
}
这似乎踢了堆栈视图并让它正确地重排视图。但是感觉比较俗气。
有没有人遇到过这个错误并找到了更好的解决方案?
我已经围绕 setNeedsLayout()、setNeedsDisplay() 等进行了各种尝试。但到目前为止,只有上面的代码解决了这个问题。