苹果手表 - 第一次慢图像动画

alc*_*iss 15 ios swift apple-watch watchkit watchos-2

我正在为苹果手表构建一个小应用程序.我里面有一个Group和一个Label.我想要做的是:

  • 动画组的背景图像
  • 图像动画结束后淡入标签

我的代码看起来基本上像这样:

        group.setBackgroundImageNamed("show_back-");
        group.startAnimatingWithImagesInRange(NSMakeRange(0, 39), duration: 1.5, repeatCount: 1);
        let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.5 * Double(NSEC_PER_SEC)))
        dispatch_after(delayTime, dispatch_get_main_queue()) { () -> Void in
            self.animateWithDuration(1) { () -> Void in
                self.label.setAlpha(1)
            };
        };
Run Code Online (Sandbox Code Playgroud)

问题是,第一次触发此序列时,图像动画的运行速度似乎慢于1.5秒,因为标签在图像停止变化之前开始淡入淡出.如果在应用程序运行时再次触发此操作,则一切都按预期工作.我想它与图像预加载或其他东西有关.

我怎样才能让它始终如一?我无法在图像序列动画上找到任何类型的回调来订阅.

编辑 我注意到的另一个问题:我有另一个案例,当bg从dispatch_after块动画时,当我通过点击表冠离开应用程序并通过双击它返回时,或者没有触发dispatch_after块,或者背景动画在第一次调用时没有正确呈现(我想第二次,因为我尝试在调度块中添加一个断点,并且每次测试时都会触发).我正在运行watchOS2,所以它可能与操作系统目前处于测试状态有关吗?

And*_*itz 0

尝试做

 group.setBackgroundImageNamed("show_back-");

 let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.5 * Double(NSEC_PER_SEC)))

 dispatch_after(delayTime, dispatch_get_main_queue()) { () -> Void in
        self.animateWithDuration(1) { () -> Void in
             group.startAnimatingWithImagesInRange(NSMakeRange(0, 39), duration: 1.5, repeatCount: 1);
             self.label.setAlpha(1)
        };
    };
Run Code Online (Sandbox Code Playgroud)

我不太确定你在做什么,但也尝试做 animateWithDuration(0) 或 (1.5)