我正在容器视图的两个子视图之间进行翻转转换。容器视图不是全屏的,并且不是视图控制器的根视图(它是一个子视图,大致占据屏幕的底部三分之一)。
在翻转过渡中切换的两个子视图(两者都是UIImageView)中,其中一个依次有两个子节点(同样是UIImageView类型)。该子视图是由于过渡而“消失”的子视图。
一旦转换开始,退出的UIImageView实例就会翻转,但它的两个孩子会立即消失。在下半部分,进入的UIImageView实例出现没有问题(它没有子代)。
我尝试将包含视图设置为全屏和不透明,但效果不佳。我读过有关contentMode,contentStretch和autoresizing mask的内容,但似乎不是它。
我正在使用旧式动画块。我尝试在块内设置进入/退出子视图的隐藏属性,并在块内添加/删除它们,但结果是相同的。我甚至尝试使用现代语法,Objective-C代码块,但仍然没有变化。
答案 0 :(得分:0)
尝试将UIImageViews及其子项放入两个单独的UIView中。轻弹这些UIViews - 它们的内容不会消失。
答案 1 :(得分:0)
我找到了答案:在动画块开始之前添加了孩子(在与动画块相同的方法中,之前几行)。
我之前测试过添加其他孩子(比如说,在-viewDidLoad)和动画期间留下的孩子。
我的猜测是,更改视图层次结构包含超出单行" addSubview:"的一些异步处理,并且新的孩子没有及时成为动画的一部分。动画块本身是异步的,但必须在提交时确定一定数量的事物(例如,视图层次结构)。
答案 2 :(得分:0)
实际问题是,在执行动画块之前立即添加子项是因为您的代码没有时间首先返回主runloop,这是实际显示的位置。如果你在viewDidLoad中添加它们,没问题。如果你在动画之前立即添加它们,它们的显示基本上被动画覆盖并且看不见。
我遇到了完全相同的问题,然后在Annoying Flash on UIView Flip Transition中找到答案。
祝你好运! 霍华德