【问题标题】:iOS UIView Transition, Container View Creation IssueiOS UIView 过渡,容器视图创建问题
【发布时间】: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];
}

我很困惑为什么我必须在一个单独的方法中定义子视图容器!提前致谢。

【问题讨论】:

    标签: ios animation uiview


    【解决方案1】:

    我相信这是由于 UIKit 如何更新屏幕上的视觉内容。如果当前运行循环在主线程上运行,则对屏幕的所有实际修改都发生在当前运行循环的末尾,否则在主线程上的下一个运行循环结束时发生。如果按代码所示添加 gameContainer,则它不在屏幕的表示层上。

    【讨论】:

    • 干杯@MHC。我认为这可能与重绘周期有关,但找不到任何参考资料。我尝试在动画之前在循环中执行 'setNeedsDisplay' 调用,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2013-01-05
    • 2015-06-15
    • 2014-09-11
    • 2013-06-09
    相关资源
    最近更新 更多