我正在开发一个有一些动画的应用程序。如果用户按下homebotton并决定返回到应用程序 - 到ViewController,动画发生的位置 - ViewController应该显示为用户刚刚进入它(动画从头开始)。我正在使用CABasigAnimation
。有人可以告诉我如何重置ViewController或类似的东西吗?
我正在考虑ViewController的生命周期,但是我找不到类似于Android Activity的onRestart()
方法的方法,如果使用者进入活动,你可以放置一些代码再次
动画代码:
CAShapeLayer *progressCircle = [CAShapeLayer layer];
//....
[self.view.layer addSublayer:progressCircle];
CABasicAnimation *drawAnimation2 = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
//....
[progressCircle addAnimation:drawAnimation2 forKey:@"drawCircleAnimation"];
答案 0 :(得分:5)
您正在寻找的方法是在您的AppDelegate类中。所有打开/关闭和系统通知都在AppDelegate.m
中进行您在AppDelegate.m中寻找的方法是:
-(void)applicationDidBecomeActive:(UIApplication *)application
要在您想要的viewController上接收此通知,您必须将以下内容添加到控制器的viewDidLoad方法中:
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(resetAnimationMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];
然后你只需创建一个方法-resetAnimationMethod
并在那里插入代码以恢复默认动画。
删除旧图层:
for (CALayer *oldLayers in self.view.layer.sublayers) {
[oldLayers removeFromSuperlayer];
}
答案 1 :(得分:0)
您可以尝试在viewWillAppear()上重置它 或类似的这样的方法,在从一个viewController转换到另一个时,会调用各个阶段。
答案 2 :(得分:0)
您可以使用于填充表视图的数据源无效,然后在表视图本身上使用重新加载数据。当您刚刚取消数据源并重新加载表视图时,它现在将为空。只需在视图生命周期viewWillDisappear上取消并重新加载即可。
然后,当您的用户返回到表视图时,您只需填充数据源,重新加载表视图并执行动画。