0

我正在容器视图的两个子视图之间进行翻转过渡。容器视图不是全屏的,也不是视图控制器的根视图(它是它的子视图,大约占据屏幕的底部三分之一)。

在翻转过渡中切换的两个子视图中(它们都是 UIImageView),其中一个依次有两个子视图(同样是 UIImageView 类型)。该子视图是由于转换而“消失”的子视图。

一旦过渡开始,退出的 UIImageView 实例就可以翻转,但它的两个孩子立即消失。在下半场,进入的 UIImageView 实例出现没有问题(它没有孩子)。

我尝试使包含视图全屏和不透明,但没有效果。我阅读了有关 contentMode、contentStretch 和自动调整大小的蒙版,但似乎并非如此。

我正在使用旧式动画块。我尝试在块内设置进入/退出子视图的隐藏属性,并在块内添加/删除它们,但结果是一样的。我什至尝试使用现代语法、Objective-C 代码块,但仍然没有改变。

4

3 回答 3

0

实际的问题是,在执行动画块之前添加的孩子没有显示出来,因为你的代码没有时间首先返回到主运行循环,这是它们实际显示的地方。如果将它们添加到 viewDidLoad 中,则没有问题。但是,如果您在动画之前立即添加它们,它们的显示基本上会被动画覆盖并且看不到。

我遇到了完全相同的问题,然后在Annoying Flash on UIView Flip Transition中找到了答案。

祝你好运!霍华德

于 2012-09-30T12:06:55.003 回答
0

我找到了答案:在动画块开始之前添加了孩子(在与动画块相同的方法内,之前几行)。

我之前测试过添加其他孩子(例如,在 -viewDidLoad 处),这些孩子会在动画期间停留。

我的猜测是,更改视图层次结构包含一些超出单行“addSubview:”的异步进动,并且新的孩子没有及时成为动画的一部分。动画块本身是异步的,但一定数量的事情必须在你提交它时修复(例如,视图层次结构)。

于 2011-03-16T06:07:13.267 回答
0

试着把你的 UIImageViews 和他们的孩子放到两个单独的 UIViews 中。轻弹这些 UIView——它们的内容不会消失。

于 2011-03-16T05:22:13.670 回答