UIStackView旋转/约束错误



我有一个UIStackView,它是使用自动布局的位置。当屏幕旋转时,我停用并激活各种约束,将堆栈视图移动到我想要的位置。

我已经使用Reveal进行了检查,以确保堆栈视图的位置正确。

在堆栈视图中,我有许多视图,堆栈视图的对齐设置为"填充",以确保它们展开以填充堆栈视图的宽度。这是正确的,除了。。。

当我旋转设备时,然后旋转回原始方向。然后堆栈视图被正确定位,但是其中的视图没有被正确定位。它们没有填充堆栈视图,而是在侧面留下一个间隙。通常在20到50分之间。但在同一台设备上总是相同的数量。

这让我感到困惑。我找到的唯一能让堆栈视图在旋转回来时正确填充的解决方案是:

override func viewDidLayoutSubviews() {
    sliders.alignment = UIStackViewAlignment.Bottom
    sliders.alignment = UIStackViewAlignment.Fill
}

这似乎踢开了堆栈视图,并使其正确地回流视图。但感觉很俗气。

有人遇到过这个错误并找到了更好的解决方案吗?

我已经围绕setNeedsLayout()、setNeedsDisplay()等尝试了各种方法。但到目前为止,只有上面的代码解决了这个问题。

您可能需要在第一次旋转和/或第一次旋转回原始方向时检查控制台。在我的案例中,我收到了一条关于冲突约束的错误消息,iOS破坏了我的一个约束(这是冲突约束的默认行为)。

此外,请检查是否无意中在任何约束上为不同大小的类添加了约束常量。当我忘记把故事板放在w:Any h:Any类中时,这种情况经常发生。

好吧,这个问题似乎在最新的SDK中消失了。所以苹果一定已经修复了。

相关内容

  • 没有找到相关文章

最新更新