【问题标题】:Subviews not displaying during Flip Transition翻转过渡期间不显示子视图
【发布时间】:2011-07-16 08:01:12
【问题描述】:

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

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

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

我已尝试将包含视图设为全屏且不透明,但没有效果。我阅读了有关 contentMode、contentStretch 和自动调整大小的蒙版,但似乎不是。

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

【问题讨论】:

    标签: iphone ios transition flip subviews


    【解决方案1】:

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

    【讨论】:

    • 我做了,但问题仍然存在。
    • 实际上我找到了答案:在动画块开始之前添加了孩子。我早些时候尝试添加其他孩子(例如,在 -viewDidLoad 处),并且那些在动画期间停留。我的猜测是,更改视图层次结构包含一些超出单行“addSubview:”的异步处理,并且新的子项没有及时成为动画的一部分。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      祝你好运! 霍华德

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多