如何在按下主页按钮后重置 ViewController 并恢复到相同的 ViewController
How to reset a ViewController after pressing the homebutton and get back to the same ViewController
我正在开发一个正在播放动画的应用程序。如果用户按下 homebotton 并决定返回到应用程序 - 到 ViewController,动画发生的地方 - ViewController 应该显示为用户刚刚定期输入它(动画从开始)。我正在使用 CABasigAnimation
。有人可以告诉我如何重置 ViewController 或类似的东西吗?
我在考虑ViewController的Lifecycle,但是没能找到类似于AndroidActivity的onRestart()
方法的方法,其中如果用户再次输入 Activity .
,您可以输入一些代码
动画代码:
CAShapeLayer *progressCircle = [CAShapeLayer layer];
//....
[self.view.layer addSublayer:progressCircle];
CABasicAnimation *drawAnimation2 = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
//....
[progressCircle addAnimation:drawAnimation2 forKey:@"drawCircleAnimation"];
您正在寻找的方法在您的 AppDelegate class 中。所有 opening/closing 和系统通知都发生在 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];
}
您可以尝试在 viewWillAppear() 上重置它
或类似的方法,这些方法在从一个 viewController 过渡到另一个 .
时被要求用于各个阶段
您可以取消用于填充 table 视图的数据源,然后在 table 视图本身上使用重新加载数据。正如您刚刚取消数据源并重新加载 table 视图一样,它现在将为空。例如,只需在视图生命周期 viewWillDisappear 上取消并重新加载。
然后,当您的用户返回到 table 视图时,您只需填充数据源,重新加载 table 视图并制作动画。
我正在开发一个正在播放动画的应用程序。如果用户按下 homebotton 并决定返回到应用程序 - 到 ViewController,动画发生的地方 - ViewController 应该显示为用户刚刚定期输入它(动画从开始)。我正在使用 CABasigAnimation
。有人可以告诉我如何重置 ViewController 或类似的东西吗?
我在考虑ViewController的Lifecycle,但是没能找到类似于AndroidActivity的onRestart()
方法的方法,其中如果用户再次输入 Activity .
动画代码:
CAShapeLayer *progressCircle = [CAShapeLayer layer];
//....
[self.view.layer addSublayer:progressCircle];
CABasicAnimation *drawAnimation2 = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
//....
[progressCircle addAnimation:drawAnimation2 forKey:@"drawCircleAnimation"];
您正在寻找的方法在您的 AppDelegate class 中。所有 opening/closing 和系统通知都发生在 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];
}
您可以尝试在 viewWillAppear() 上重置它 或类似的方法,这些方法在从一个 viewController 过渡到另一个 .
时被要求用于各个阶段您可以取消用于填充 table 视图的数据源,然后在 table 视图本身上使用重新加载数据。正如您刚刚取消数据源并重新加载 table 视图一样,它现在将为空。例如,只需在视图生命周期 viewWillDisappear 上取消并重新加载。
然后,当您的用户返回到 table 视图时,您只需填充数据源,重新加载 table 视图并制作动画。