如果父视图正在动画,则 IOS7 子视图会被动画
Posted
技术标签:
【中文标题】如果父视图正在动画,则 IOS7 子视图会被动画【英文标题】:IOS7 Subviews get animated if their parent view is being animated 【发布时间】:2013-10-17 09:46:46 【问题描述】:当我开始针对 ios7 进行测试时,我的一些观点遇到了一个非常奇怪的错误。看来,如果任何可以动画的属性在子视图中更改其值,而其父级正在执行动画,则该更改也会被动画化。我有以下方法:
- (void)performAnimation
[UIView animateWithDuration:0.42
delay:0
options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionBeginFromCurrentState
animations:^
self.myView.contentInset = contentInset;
completion:NULL];
与此同时,我在该视图上的 layoutsubviews 函数被调用,它更新了一些子视图的位置。
-(void)layoutSubviews
self.someSubview.frame = CGRectMake(10,20,30,40);
在 iOS5/6 中,变化是瞬间发生的,但在 iOS7 中,它会变成动画,因此您可以看到我的子视图从初始位置缓慢移动到最终位置。有什么想法吗?
【问题讨论】:
有点奇怪的是你为contentInset
制作了动画。由于:developer.apple.com/library/ios/documentation/uikit/reference/…
你使用autolayout
吗?
【参考方案1】:
我终于弄明白了。在IOS7中他们引入了一个新功能
+ (void)performWithoutAnimation:
我只是将我的代码包装在其中的 layoutSubviews 中,不需要的动画就消失了。
【讨论】:
太棒了,当一堆视图被移动时,我在 iOS 7 中遇到了类似的新动画抖动问题。必须做同样的事情并进行一些更改并从中删除动画。以上是关于如果父视图正在动画,则 IOS7 子视图会被动画的主要内容,如果未能解决你的问题,请参考以下文章