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

带有自动布局的新子视图的 iOS 7+ 缩放动画

IOS:UIView 过渡中的奇怪颜色:UIViewAnimationOptionTransitionCurlDown

陷入 iOS 自动布局泥潭

UIView 框架、边界和中心

动态添加 UIView,还是创建 UITableView? IOS