Ben*_*ild 29 animation uikit autolayout nslayoutconstraint ios10
我注意到在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:{ ... }];
Run Code Online (Sandbox Code Playgroud)
...在我的测试中,最初添加的约束也addConstraints()
将在iOS 10中使用UIView 块进行动画处理......这导致了迄今为止一些时髦/不良行为.animateWithDuration()
例如,在数组中设置左/右约束(但块中的垂直约束)会导致整个视图使用此方法对角地在屏幕上进行动画处理......这是完全错误的.
有没有人知道如何正确地为iOS 9(及以下)以及10?
bee*_*con 90
尝试调用layoutIfNeeded
视图的超级视图,而不是视图本身.
-
我有一个类似的问题,我的视图应该从顶部在0高度,向下到> 0高度(即(0,0,320,0)到(0,0,320,44))动画.
在iOS 10中使用Xcode 8,动画行为有很大不同.视图不是从顶部向下动画,而是从目标框架的垂直中心向上和向下动画.
我修复此问题,而不是调用layoutIfNeeded
视图本身,在视图的超级视图上调用它.不知何故,这种行为得到了恢复.
希望能帮助到你!
根据文档,
layoutIfNeeded
列出子视图(但不考虑当前视图本身).因此,为了更新当前视图布局,需要layoutIfNeeded
从超级视图调用.