iOS UIView 过渡,容器视图创建问题
Posted
技术标签:
【中文标题】iOS UIView 过渡,容器视图创建问题【英文标题】:iOS UIView Transition, Container View Creation Issue 【发布时间】:2011-03-07 20:21:25 【问题描述】:我搜索了博客和 Apple 文档,但找不到答案。希望有人可以提供他们的专业知识。
我有一个简单的 UIView 动画,它作用于容器视图'gameContainer'。如果我在之前调用的方法中创建这个容器视图,一切都很好。
但是,当我在动画调用(下面的代码)之前创建 'gameContainer' 时,子视图 '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];
我很困惑为什么我必须在一个单独的方法中定义子视图容器!提前致谢。
【问题讨论】:
【参考方案1】:我相信这是由于 UIKit 如何更新屏幕上的视觉内容。如果当前运行循环在主线程上运行,则对屏幕的所有实际修改都发生在当前运行循环的末尾,否则在主线程上的下一个运行循环结束时发生。如果按代码所示添加 gameContainer,则它不在屏幕的表示层上。
【讨论】:
干杯@MHC。我认为这可能与重绘周期有关,但找不到任何参考资料。我尝试在动画之前在循环中执行 'setNeedsDisplay' 调用,但没有成功。以上是关于iOS UIView 过渡,容器视图创建问题的主要内容,如果未能解决你的问题,请参考以下文章
带有视图的 UIView 过渡和设置框架不再适用于 iOS 8