UIView翻转转换中令人烦恼的Flash



我正试图使用UIView.transitionFromView:toView:在视图a-1和背面视图a-2之间进行翻转转换。这些视图有许多同级视图,由于我不希望整个超视图旋转,我插入了一个临时容器视图,它刚好足够大,可以将a-1和a-2都包含在视图层次结构中,并在转换之前立即将a-1插入其中。

问题是,一旦转换开始,视图A-1就会以难看的闪光消失,这很难看。当我将它插入到临时容器视图中时,我认为它可能会消失(因为将它添加到容器中会隐式地将它从正常的超视图中删除),但据我所知,目前还没有发生。我使用的代码看起来像这样:

[container addSubview:fromView];
[self.view addSubview:container];
[UIView transitionFromView:fromView toView:toView duration:2
options:UIViewAnimationOptionTransitionFlipFromRight
... ];

我在完成例程中取消挂钩并移除容器,这里没有显示,因为在代码执行之前会出现flash问题。

我必须在CALayer级别上这样做才能避免这个问题吗?我是否误解了视图到视图转换应该如何工作?任何想法都将不胜感激,霍华德

明白了!我应该知道,因为我过去一直被这个咬过(愚蠢地认为我再也不会犯同样的错误了。:-)这一切都是关于神奇的"重绘时刻"的事情——在将临时容器插入层次结构并将"fromView"移到容器中之后,你需要调用

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

返回到主运行循环,以便更新后的层次结构可以在实际执行动画之前重新绘制自身。"transitionInfo"参数只是一个字典,用于将"fromView"one_answers"toView"参数传递到动画例程。

霍华德

相关内容

  • 没有找到相关文章

最新更新