0

我正在尝试使用 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
                   ... ];

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

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

4

1 回答 1

1

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

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

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

霍华德

于 2012-09-29T13:59:40.650 回答