我想在应用程序变为活动状态或成为前台时在UIViewController中重新加载数据.
我知道在AppDelegate类中调用了applicationDidBecomeActive.
但我必须有一个UIViewController的全局变量来重新加载AppDelegate类中的数据,就像这段代码一样:
in AppDelegate.m
// global variable
UIViewController *viewController1;
UIViewController *viewController2;
-(void)applicationDidBecomeActive:(UIApplication *)application
{
[viewController1 reloadData];
[viewController2 reloadData];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我有很多UIViewControllers时,它很不方便.
我可以在UIViewController而不是AppDelegate类中使用applicationDidBecomeActive吗?
或者有比UIViewController的全局变量更好的方法吗?
我还需要使用UIViewControllers中的以下方法:
-(void)applicationWillResignActive:(UIApplication *)application
-(void)applicationDidEnterBackground:(UIApplication *)application
-(void)applicationWillEnterForeground:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud) 我有以下基于块的动画:
[UIView animateWithDuration:0.5f delay:0.0f
options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionCurveEaseInOut
animations:^{
[view.layer setTransform:CATransform3DMakeScale(1.3f, 1.3f, 1.0f)];
NSLog(@"animating");
}completion:^(BOOL finished){
NSLog(@"Completed");
}];
Run Code Online (Sandbox Code Playgroud)
当应用程序从后台返回时,将调用完成块,并且我的动画不会重新启动.我尝试使用以下委托方法重新启动动画:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
/*
Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
*/
[[self viewController] animate];
......
}
Run Code Online (Sandbox Code Playgroud)
但这并没有恢复动画.
同样,我尝试了这些问题的答案中列出的方法:
但那里没有任何建议对我有用.当应用程序从后台返回时,是否有另一种方法可以恢复基于块的UIView动画?
我正在观看动画.但我面临的问题很少.我必须按钮startAnimation和Stop Animation.为了在我的imageview上执行动画,我在startAnimation按钮的动作中使用以下代码:
UIViewAnimationOptions option = UIViewAnimationOptionRepeat + UIViewAnimationOptionAutoreverse;
[UIView animateWithDuration:2.5 delay:0.0 options:option
animations:^{
CGAffineTransform scale = CGAffineTransformMakeScale(2.0, 2.0);
CGAffineTransform translate = CGAffineTransformMakeTranslation(-50.0, -100.0);
CGAffineTransform mix = CGAffineTransformConcat(scale, translate);
imv.transform = mix;
}
completion:^(BOOL finished) {
}
];
Run Code Online (Sandbox Code Playgroud)
这很有效.现在我遇到的问题是:
如何解决这些问题?