我有一个不同的应用程序,取决于它是纵向还是横向(具体来说,是否高度>宽度)。在旋转时,在viewWillTransitionToSize:withTransitionCoordinator:
中,我适当地更新了一些自动布局约束的常量。问题在于,此时视图框架还没有实际旋转,所以我经常在调试器中得到一个愤怒的信息,即我的约束不能满足。
我的问题是:在旋转序列中的哪一点,我修改了约束,以便视图的帧已经改变,但我仍然可以在旋转的同时获得动画? / p>
This question建议在[self.view setNeedsUpdateConstraints]
中调用willAnimateRotationToInterfaceOrientation
,但该方法现已弃用。我尝试在viewWillTransitionToSize
中调用该方法,但仍然得到了愤怒的消息。
答案 0 :(得分:2)
我似乎解决了它。请参阅this article和PureLayout。基本上是:
-(void)updateConstraintsForSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator;
[self.view layoutIfNeeded]
阻止参数中安装它们并animateAlongsideTransition
。否则只需安装和布局。viewDidLayoutSubviews
并使用self.view.bounds.size
和nil
viewWillTransitionToSize:withTransitionCoordinator:
并正确调用您的方法