当我开始针对 iOS7 进行测试时,我的一些 View 出现了一个非常奇怪的错误。看起来,如果任何可以动画的属性在 subview 中更改其值,而其父级正在经历动画,则更改也会被动画化。我有以下方法:
- (void)performAnimation{
[UIView animateWithDuration:0.42
delay:0
options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.myView.contentInset = contentInset;
}
completion:NULL];
}
与此同时,我在该 View 上的 layoutsubviews 函数被调用,它更新了一些 subview 的位置。
-(void)layoutSubviews{
self.someSubview.frame = CGRectMake(10,20,30,40);
}
在 iOS5/6 中,变化是瞬间发生的,但在 iOS7 中,它是动画的,所以你可以看到我的 subview 从它的初始位置慢慢地移动到它的最终位置。有什么想法吗?
最佳答案
我终于想通了。在IOS7中他们引入了一个新功能
+ (void)performWithoutAnimation:
我只是将我的代码包装在其中的 layoutSubviews 中,不需要的动画就消失了。
关于如果 IOS7 subview 的父 View 正在设置动画,则 subview 会设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423291/