我搜索过博客和Apple文档但找不到答案。希望有人可以提供他们的专业知识。
我有一个简单的UIView动画,它对容器视图'gameContainer'起作用。如果我在之前调用的方法中创建此容器视图,那么一切都很好。
但是,当我在动画调用之前立即创建'gameContainer'(下面的代码)时,只显示subView 'viewGrid'而没有任何动画效果。
-(IBAction) onInfoUp: (id) sender {
//Add a container UIView for animation
[self.view addSubview:gameContainer]; // Moving this line to 'viewDidLoad' cures problem
//Call animation methods
[UIView beginAnimations:@"newGrid" context:nil];
[UIView setAnimationDuration:1.3];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:gameContainer cache:YES];
[gameContainer addSubview:viewGrid];
[UIView commitAnimations];
}
我很难过为什么必须在单独的方法中定义子视图容器!提前谢谢。
答案 0 :(得分:1)
我相信这是因为UIKit如何更新屏幕上的视觉内容。对屏幕的所有实际修改都发生在当前运行循环结束时,如果它在主线程上运行,或者在主线程上的下一个运行循环结束时发生。如果您按照代码中所示添加gameContainer,则它不在屏幕的表示层上。