2015-12-09 54 views
1

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

我已经检查过使用Reveal来确保堆栈视图正确定位。

在堆栈视图中,我有许多视图,并且堆栈视图的对齐方式设置为填充以确保它们展开以填充堆栈视图的宽度。这工作正常,除...

当我旋转设备,然后回到原来的方向。然后堆栈视图被正确定位,但其中的视图不是。他们没有填满堆叠视图,而是在侧面留下空隙。通常在20到50点之间。但是在同一台设备上总是一样的数量。

这让我感到莫名其妙。我发现获取堆栈以期旋转回正确填写唯一的解决办法是这样的:

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

这似乎踢堆栈视图,并使其正常回流的意见。但它感觉很俗气。

有没有人遇到过这个bug并找到了更好的解决方案?

我已经试过围绕setNeedsLayout(),setNeedsDisplay()等各种各样的这样的,但等等,但只有上述代码已经解决了这个问题。

回答

0

好的,问题似乎已经消失与最新SDKs。所以必须由苹果公司修复。

0

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

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