按home键后如何重置ViewController并返回到同一个ViewController

moo*_*obi 0 objective-c uiviewcontroller ios

我正在开发一个有一些动画的应用程序.如果用户按下homebotton并决定返回到应用程序 - 到ViewController,动画发生的地方 - ViewController应该显示为用户刚刚进入它(动画从头开始).我在用CABasigAnimation.有人可以告诉我如何重置ViewController或类似的东西?

我在考虑ViewController的生命周期,但是我找不到类似于Android Activity onRestart()方法的方法,如果使用者再次进入Activity,你可以放置一些代码.

动画代码:

CAShapeLayer *progressCircle = [CAShapeLayer layer];
//....
[self.view.layer addSublayer:progressCircle];
CABasicAnimation *drawAnimation2 = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
//....
[progressCircle addAnimation:drawAnimation2 forKey:@"drawCircleAnimation"];
Run Code Online (Sandbox Code Playgroud)

Jus*_*der 5

您正在寻找的方法是在AppDelegate类中.所有打开/关闭和系统通知都在AppDelegate.m中进行

您在AppDelegate.m中寻找的方法是:

-(void)applicationDidBecomeActive:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

要在您想要的viewController上接收此通知,您必须将以下内容添加到控制器的viewDidLoad方法中:

 [[NSNotificationCenter defaultCenter]addObserver:self
                                     selector:@selector(resetAnimationMethod)
                                         name:UIApplicationDidBecomeActiveNotification
                                       object:nil];
Run Code Online (Sandbox Code Playgroud)

然后,您只需创建一个方法-resetAnimationMethod并在那里插入代码以恢复默认动画.

要删除旧图层:

for (CALayer *oldLayers in self.view.layer.sublayers) {
    [oldLayers removeFromSuperlayer];
}
Run Code Online (Sandbox Code Playgroud)