【问题标题】:application launch animation works only when running from Xcode应用程序启动动画仅在从 Xcode 运行时有效
【发布时间】:2016-09-19 11:33:13
【问题描述】:

我的视图类似于 LaunchScreen.storyboard 中的视图,并且我正在使用 viewDidLoad 中的此代码在运行时对其进行缩放:

    UIView.animate(withDuration: 0.4, animations: {
        self.aftab_logo.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
        self.aftab_logo.alpha = 0
        self.login_content.alpha=1
        }, completion: { _ in
            self.aftab_logo.removeFromSuperview()
    })

当我关闭应用程序并再次从设备运行时,此动画不会显示,但是当我从 Xcode 运行应用程序时,一切都很好。有什么问题?

【问题讨论】:

  • 您是否尝试过终止或关闭您的应用程序?因为如果你的应用程序在后台,那么它会在你离开之前从 viewcontroller 开始!
  • 是的,我正在从最近的应用程序和启动屏幕显示中关闭它,但缩放动画不起作用@Lion

标签: ios swift xcode


【解决方案1】:

这是因为您的 viewDidload 在您 UI 获得布局之前被调用。所以,如果你想要任何与scaling 任何对象相关的动画,那么你应该使用viewDidAppear 而不是viewDidload。

现在,如果您只想在用户启动应用程序时而不是在用户返回第一个屏幕时只需要动画,那么您应该设置一些 flag 并可以将其值存储在某个地方来管理它。

所以,试试viewDidAppear 而不是viewDidload!

更新:

我制作了一个类似于您的设置的演示,它在viewDidload 中也可以正常工作。主要问题是 viewdidload 运行它的持续时间非常短。

一旦尝试像 2.0 那样改变你的持续时间,你会发现你的动画效果很好!

【讨论】:

  • 检查我更新的答案!增加你的持续时间,因为你没有给足够的时间来展示它!
  • 是的,我发现问题不是 viewdidload 或 viewdidapper。但是重量*?为什么第二次运行时间大约是第一次运行时间的一半?
  • 当您从 xcode 运行项目到您的设备时,需要一些额外的时间才能显示您的动画,但如果您的应用程序已经在您的设备内存中,那么它运行得更快,有许多原因与内存管理、缓存等有关,但它们超出了这个问题的范围。您应该增加完全符合您要求的持续时间。这就是您当前问题的解决方案!干杯!
【解决方案2】:

可能只是您设备的缓存正在加载以前的实现,请尝试从您的设备中删除该应用程序并再次运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 2011-11-28
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多