我有一个带有一些 UIViews 的 UIScrollView,它再次包含各种其他视图(标签、文本字段等)。现在,当我旋转设备时,我想改变滚动视图中视图的大小和位置。为此,我预先计算了一组纵向和横向模式的约束,并根据当前界面方向切换滚动视图上的约束。基本上,这按预期工作。问题是我不希望视图被简单地提出,而是平滑地动画到它们的新位置。这就是我现在完全陷入困境的地方。基本动画效果很好,即滚动视图中的视图是完美的动画,但这些视图中的子视图只是重新定位而不是动画。我使用以下代码启动动画
NSMutableArray *constraints = UIInterfaceOrientationIsLandscape(interfaceOrientation) ? self.landscapeConstraints : self.portraitConstraints;
[self.scrollView removeConstraints:self.scrollView.constraints];
[self.scrollView addConstraints:constraints];
[UIView animateWithDuration:duration
animations:^{
[self.scrollView layoutIfNeeded];
}];
据我所知(就我的研究而言),这就是应该这样做的方式......但显然我错了,我无法终生弄清楚我需要做些什么不同的事情。在动画结束时,一切都定位得很好,但子视图只是拒绝动画。任何帮助是极大的赞赏!
为了完整起见,可能值得一提的是,我从情节提要加载了我在滚动视图中定位的视图,我还为它们的子视图设置了约束。我认为这应该不是问题,因为布局确实有效......除了动画。