自动执行横向和纵向模式的不同约束

时间:2016-02-21 22:49:06

标签: ios autolayout masonry-ios-osx

我使用Masonry库来帮助以编程方式添加约束。 它很好,但现在我面临的问题是我需要在用户将设备从横向旋转到纵向后卸载并添加新约束。我尝试了相当“野蛮”的解决方案,它确实改变了约束,但是,在第二部分我可以看到“旧的”约束。用户旋转设备后是否有简单的方法来添加/删除约束?这就是我尝试过的(它可以工作,但正如我上面描述的那样,我可以看到“老”帧):

setStrokingColor(...);
setNonStrokingColor(...);
addRect(...);
fillAndStroke();

1 个答案:

答案 0 :(得分:1)

  

我需要在用户将设备从横向旋转到纵向后卸载并添加新约束。我尝试了相当“野蛮”的解决方案,它确实改变了约束条件,但是,在一小部分时间内,我可以看到“旧”约束。

但问题是:在用户旋转设备后,您正在更改约束。所以是造成你不喜欢的现象的人,即在轮换结束后发生这种情况的时间只有一小部分

正确的解决方案是在用户旋转设备之前更改约束。如果你这样做,约束的变化将被神奇地动画化以匹配旋转,并且变化将显得绝对无缝。

例如,如果这是一个iPhone应用程序,您可以实现视图控制器的willTransitionToTraitCollection...并在那里进行约束更改,并且更改将与旋转神奇地匹配。