在UIView Flip Transition上烦人的Flash

时间:2012-09-28 15:21:39

标签: ios graphics

我尝试使用UIView.transitionFromView:toView:在视图,A-1和背面视图A-2之间进行翻转过渡。这些视图有很多兄弟姐妹,因为我不想让整个superview旋转,所以我插入一个临时容器视图,该视图足够大,可以将A-1和A-2同时包含在视图中层次结构并在转换之前插入A-1。

问题是,一旦过渡开始,视图A-1就会以难看的闪光消失,这很难看。当我将它插入到临时容器视图中时,我认为它可能正在消失(因为将它添加到容器中会隐式地将其从正常的superview中删除),但是我可以告诉它,它不会发生在那一点上。我使用的代码看起来像这样:

[container addSubview:fromView];
[self.view addSubview:container];

[UIView transitionFromView:fromView toView:toView duration:2
                   options:UIViewAnimationOptionTransitionFlipFromRight
                   ... ];

我解除并删除了完成例程中的容器,我没有在此处显示,因为在执行代码之前出现了闪存问题。

我是否必须在CALayer级别执行此操作以避免此问题?我是否误解了视图转换应该如何工作?任何想法将不胜感激, 霍华德

1 个答案:

答案 0 :(得分:1)

知道了!我应该知道,因为我过去曾经被这种情况所困扰(并且愚蠢地认为我再也不会犯同样的错误。:-)这就是关于那个神奇的“重绘时刻”的事情 - 在插入临时容器之后进入层次结构并将'fromView'移动到容器中,您需要调用

[self performSelector:@selector(doAnimation:) withObject:transitionInfo afterDelay(0)]

返回主runloop,以便更新的层次结构可以在您实际执行动画之前重绘自己。 'transitionInfo'参数只是一个字典,用于将'fromView'和'toView'参数传递给动画例程。

霍华德