didFinishLaunchingWithOptionsのアニメーションでビューをダイアプレイしたいだけです。私のコードは次のようになります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CGRect finalRect = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);
UIImage *image = [UIImage imageNamed:@"122.jpg"];
UIButton* pic = [[UIButton alloc] initWithFrame:finalRect];
[pic setBackgroundImage:image forState:UIControlStateNormal];
[pic setHidden:true];
pic.center = CGPointMake(finalRect.size.width / 2, finalRect.size.height / 2);
UIViewController* controller = [[UIViewController alloc] init];
[controller setView:pic];
[self.window setRootViewController:controller];
[self.window makeKeyAndVisible];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.5];
[pic setHidden:false];
[UIView commitAnimations];
return YES;
}
しかし、アニメーションはまったく機能しません。突然画面に表示されたばかりの写真付きのサブビュー。しかし、ボタンを使用してアニメーションコードをトリガーすると、ビューは想定どおりにアニメーションで表示されます。didFinishLaunchingWithOptionsに制限はありますか?
PS:
この問題は、rokjarcが以下で説明するように、アニメーションコードをコントローラーのviewDidAppearプロシージャに移動することで解決されます。
しかし、didFinishLaunchingWithOptionsから呼び出される遅延ルーチンでアニメーションコードを実行することで、これを解決する別の解決策があります。
[self performSelector:@selector(executeAnimation) withObject:nil afterDelay:1];