【发布时间】:2013-11-24 08:36:18
【问题描述】:
大家好, 小问题。
我创建了一个UIView 类AnimatedUIView。
在 init 中,我创建了一个子视图,我像这样设置动画:
- (void)animateView{
[UIView animateWithDuration:4.0
delay:1.0
options: nil
animations:^{
// Animation PART 1
}
completion:^(BOOL completed){
[UIView animateWithDuration:4.0
animations:^{
// Animation PART 2
}
completion:^(BOOL completed){
[self animateView];
}
];
}
];
}
我必须在第二个完成块中自己调用[self animateView],而不是使用选项重复,因为我只想延迟第一个动画1秒。
一切正常,我分配并初始化我的视图并将其添加为子视图,它应该是动画的。
但是,当我关闭我的超级视图时,我猜 ARC 会完成它的工作并释放动画视图,但我的 CPU 会达到 100%!
我进行了调查,如果我对[self animateView] 的调用发表评论,当我关闭超级视图时,我的 CPU 不会飙升。
所以我已经设法解决了这个问题(通过在调用之前放置一个条件并在关闭超级视图之前更改一个布尔值,keepAnimating = NO),我只是想了解它为什么这样做?
为什么它试图保持动画,为什么它使用这么多 CPU?
如果我将 NSLog 放在完成块中,我会每 8 秒第一次看到它,但是当我关闭超级视图时,NSLog 只会每毫秒出现一次......
顺便说一句:它与这个问题有关:UIView animation using 90%CPU,这并没有真正得到回答。非常感谢!
【问题讨论】:
标签: ios iphone uiview cpu uianimation