gpt4 book ai didi

ios - Apple Watch - 慢速图像动画第一次

转载 作者:IT王子 更新时间:2023-10-29 05:19:50 24 4
gpt4 key购买 nike

我正在为 Apple Watch 构建一个小应用程序。我里面有一个组和一个标签。我想做的是:

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

我的代码基本上是这样的:

        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)
};
};

问题是第一次触发此序列时,图像动画的运行速度似乎低于 1.5 秒,因为标签在图像停止变化之前开始淡入。如果在应用程序运行时再次触发,一切都会按预期进行。我想这与图像预加载或其他事情有关。

如何让它始终如一地工作?我找不到任何类型的图像序列动画结束回调来订阅。

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

最佳答案

我遇到了和你一样的问题。

发生这种情况是因为在您第一次尝试时, watch 需要时间来加载图像。苹果也没有给我们任何“预加载”方法,所以我想出了一些解决方法:何时显示我的 Controller :

func willActivate()

我在后台播放一次动画序列,这样当我的用户点击它时图像已经加载。

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,     0)) { [weak self] in
if let uSelf = self {
uSelf.statusAnimationImage.setImageNamed("my image name")
uSelf.statusAnimationImage.startAnimatingWithImagesInRange(NSMakeRange(0, 359), duration: 0.5, repeatCount: 1)
}
}

这是我找到的解决此问题的最佳方法,对我很有效。

关于ios - Apple Watch - 慢速图像动画第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com