我有几个 uiview 子类的对象,在 viewcontroller 的主视图中,我通过在类中调用以下方法来无限地设置动画:
- (void)hover:(NSNumber *)upDown {
int sense = [upDown intValue];
[UIView animateWithDuration:0.8 delay:0.1 options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
CGRect frame = self.frame;
frame.origin.y += (sense==1?1:-1) * 5;
self.frame = frame;
}
completion:^(BOOL finished){
[self hover:[NSNumber numberWithInt:(sense==1?0:1)]];
}];
}
它工作得很好,除了在设备中,当按下主页按钮时,应用程序会半冻结(应用程序最终会通过反复按下主页按钮一段时间进入后台)并且与其他按钮的任何交互都会停止工作。它在任何其他情况下都可以正常工作,即只要我不按主页按钮,我就可以在控制器、按钮等...和模拟器上导航。
有任何想法吗?
更新:罪魁祸首似乎是我应用于我正在制作动画的视图的阴影
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 1.0;
self.layer.shadowRadius = 5.0;
这似乎会导致某种开销,只会影响应用程序无法进入后台状态???
有人遇到过这个吗?
更新:最后我决定去掉那段代码,在 drawRect: 方法中用 Quartz 绘制阴影。我怀疑这个问题可能与 iPhone 在进入后台模式之前拍摄的快照以及应用于边界外图层的阴影有关,但这只是一个猜测。