【问题标题】:iOS: default segue animation violated and destroy my other animation timingiOS:违反了默认的segue动画并破坏了我的其他动画时间
【发布时间】:2016-11-16 14:10:11
【问题描述】:

我在两个默认类型为 Show 的 View Controller 之间使用默认 segue。它有默认的幻灯片动画,我以编程方式执行它。在第二个视图控制器上,我有一个动画。 当我第一次打开第二个视图控制器时,所有动画都正常——segue 的动画和与第二个视图控制器相关的动画按预期工作。

当我点击后退按钮并再次打开第二个视图控制器时,没有幻灯片转场动画(我的意思是根本没有动画),第二个视图控制器刚刚出现。我在第二个视图控制器上的动画是有效的,但时间是错误的。我会解释一下:我有两个不同时间的 UIView 动画块,但是在这个小故障之后,两个以相同持续时间和动画执行的动画块变得非常沉闷。我正在考虑录制视频来演示这个问题。

我不明白问题的根源是什么。也许有人遇到同样的行为并知道原因?

我的问题是:如何调试这种行为?我还没有显示任何代码行,因为我不确定问题可能隐藏在哪里。

【问题讨论】:

  • 有时我有奇怪的导航行为,因为我忘了调用超级方法。所以举个例子,在 viewDidAppear 方法中,我忘了调用 super.viewDidAppear(animated)。
  • @JanDoornbos 感谢您提供线索,我会检查一下。
  • @JanDoornbos 不幸的是,这并没有帮助,但我会继续挖掘。

标签: ios iphone animation uiview segue


【解决方案1】:

我在我的代码中发现了一个问题。这是一个 UIImageView 属性,它在后台队列中设置了图像。我忘了在主队列块中设置它的属性。

dispatch_async(dispatch_get_main_queue(), {
...
})

破坏动画的愚蠢错误!我决定留下这个问题和答案,以防有人遇到同样的行为。

编辑

我发现我使用 MKMapSnapshotter 来创建地图,我将其放入调度异步块中,因为我不想阻塞主队列来生成地图图像。现在,我知道我不需要这样做,因为:method executes the request asynchronously 并且有在主队列中调用的完成处理程序。我删除了所有与调度相关的代码,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多