子视图在翻转过程中不显示

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

在两个孩子的意见切换翻转过渡(他们都是UIImageView),其中一个有两个孩子轮stream(同样,UIImageViewtypes)。 这个子视图是由于转换而“消失”的子视图。

一旦转换开始,退出的UIImageView实例翻转好,但其两个孩子马上消失。 在下半年,进入的UIImageView实例出现没有问题(它没有孩子)。

我试图使包含的视图全屏和不透明,没有任何效果。 我读了contentMode,contentStretch和autoresizing面具,但似乎并不是这样。

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

尝试把你的UIImageViews与他们的孩子分成两个独立的UIViews。 轻弹这些UIViews – 他们的内容不会消失。

我find了答案:在animation块开始之前(与animation块相同的方法,之前几行)添加了子元素。

我之前testing过添加其他孩子(比如说,在-viewDidLoad中),还有那些在animation中停留的孩子。

我的猜测是,更改视图层次结构包含一些超出单行“addSubview:”的asynchronous进程,而新的subprocess并没有及时成为animation的一部分。 animation块本身是asynchronous的,但是一定数量的东西肯定会在你提交的时候被修复(例如,视图层次结构)。

实际的问题是,在执行animation块之前添加子项不会显示,因为您的代码没有时间首先返回到主runloop,这是实际显示的位置。 如果你在viewDidLoad中添加它们,没问题。 如果您在animation之前立即添加它们,则它们的显示基本上会被animation覆盖,而不会被看到。

我有完全相同的问题,然后在UIView翻转过渡令人厌烦的Flash中找出答案。

祝你好运! 霍华德