我注意到在 iOS 10 Beta 5(即将尝试 Beta 6)中,AutoLayout 约束动画的行为有点不同。
例如,此方法的工作方式与之前的 iOS 版本不同:
[view addConstraints:@[constraints...]];
[view setNeedsUpdateConstraints];
[view layoutIfNeeded];
[UIView animateWithDuration:...
{
/* adjust constraint here... */
[view layoutIfNeeded]; // Only the adjusted constraints since previous layoutIfNeeded() call should animate change with duration.
} completion:{ ... }];
...在我的测试中,约束最初添加为addConstraints()
will also在 iOS 10 中使用 UIView 制作动画animateWithDuration()
阻止...到目前为止,这导致了一些奇怪/不良的行为。
例如,在数组中设置左/右约束(但在块中设置垂直约束)使整个视图以对角线方式显示在屏幕上用这种方法......这是完全不正确的。
有谁知道如何在 iOS 9(及更低版本)和 10 上正确执行此操作?
尝试打电话layoutIfNeeded
在视图的超级视图上,而不是视图本身。
--
我遇到了类似的问题,我的视图应该从顶部 0 高度开始动画,向下到 > 0 高度(即 (0, 0, 320, 0) 到 (0, 0, 320, 44))。
将 Xcode 8 与 iOS 10 结合使用时,动画行为有很大不同。视图不是从顶部向下动画,而是从目标帧的垂直中心向上和向下动画。
我解决了这个问题,而不是打电话layoutIfNeeded
在视图本身上,在视图的超级视图上调用它。不知何故,行为又恢复了。
希望能帮助到你!
Helpful comment by @Ramiro:
根据文档,layoutIfNeeded
布置子视图(但不考虑当前视图本身)。因此,为了更新当前视图布局,您需要调用layoutIfNeeded
从超级来看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)