【问题标题】:Programatically Set UIImage Animation with WatchKit使用 WatchKit 以编程方式设置 UIImage 动画
【发布时间】:2025-11-29 17:25:01
【问题描述】:

我似乎无法弄清楚如何通过插座以编程方式设置新图像并使其开始动画。

序列

  • zeroEntering0.png
  • zeroEntering1.png
  • zeroEntering2.png
  • zeroEntering3.png
  • zeroEntering4.png

我将图像序列导入到 WatchKit App

内的 Image.xcassets

我可以将界面生成器中的图像设置为“zeroEntering”并将动画设置为“是”,它可以正常工作。

但是,我想要一些更动态的东西,我需要按下按钮来选择一个新的动画序列并开始它。如果我尝试使用界面生成器中的相同名称以编程方式设置图像,则 UIImage 为 nil。

以编程方式设置 UIImage 时应该使用什么命名约定? “zeroEntering”、“zeroEntering0”、“zeroEntering.png”或“zeroEntering0.png”

我尝试使用两个非零选项,但图像没有动画并变黑。

【问题讨论】:

    标签: ios objective-c animation watchkit


    【解决方案1】:

    答案很微妙,肯定让我的*旋转太久。

    据此beautiful article

    当您要显示的图像缓存在手表上且位于手表应用程序包中的资产目录中时,您应该使用 setImageNamed(:),并且当图像未缓存时使用 setImage(:) - 这会将图像数据通过无线传输到 Apple Watch!

    所以,我把我的图片保存在手表应用的资产目录中,然后切换使用,

    [self.testImage setImageNamed:@"zeroEntering"];
    [self.testImage startAnimatingWithImagesInRange:NSMakeRange(0, 4) duration:0.2 repeatCount:100];
    

    【讨论】:

      【解决方案2】:

      设置图片为[UIImage imageNamed:@"entering"]然后调用startAnimatingWithImagesInRange:duration:repeatCount:

      在这里查看:https://developer.apple.com/library/prerelease/ios/documentation/WatchKit/Reference/WKInterfaceImage_class/#//apple_ref/occ/instm/WKInterfaceImage/startAnimatingWithImagesInRange:duration:repeatCount:

      请务必遵循此处的提示:https://developer.apple.com/watchkit/tips/

      【讨论】:

      • 我知道 startAnimatingWithImagesInRange,抱歉忘了明确提及。但是,您实际上只是建议了我已经尝试过的内容...将图像放在哪里,WatchKit Extension 或 WatchKitApp?奇怪的是,当它们仅在扩展程序中时,我可以以编程方式提取单个图像。但我可以在应用程序中提取动画和单个图像。
      • 嗯。抱歉,我读了你的问题有点快。如果您不需要修改图像,则绝对应该将它们放入 Watch 应用程序包中。这样您就不需要通过 BTLE 传输它们。然后根据需要按名称引用它们?
      • 在您提到的文章中找到了这一点,“建议您将图像资源文件放在 WatchKit 应用程序的包中(而不是在 WatchKit 扩展程序包中)。将它们放在 WatchKit 应用程序包中可以您可以使用此类的 setImageNamed: 方法来指定动画图像。”如果我只是命名错误或其他东西,我会回来检查:/。谢谢
      • 我已经更新了我的问题,有什么建议吗?欣赏它
      最近更新 更多