有没有办法在Apple Watch上制作类似于iPhone进度条的效果?

5

大家好,我是新手苹果手表开发人员。有没有办法在苹果手表上显示进度条?我有一个应用程序,其中的进度条会随着用户位置的更新而更新。我已经在iPhone上实现了相同的事情,但现在我想在苹果手表上实现相同的功能。有没有可能做到这一点?

3个回答

11
在watchOS 2+中创建一个纯色进度条最简单的方法是只需要1张图片:
  1. 在你想要放置进度条的位置添加一个组,该组的大小应为100%。
  2. 向组中添加一个WKInterfaceImage,并使用一张纯色图片。
  3. 每当当前值发生变化时,在代码中调用progressBarImage.setRelativeWidth(CGFloat(currentValue / maxValue), withAdjustment: 0)
如果你想要一个垂直进度条,则有一个相应的函数:progressBarImage.setRelativeHeight(CGFloat(currentValue / maxValue), withAdjustment: 0)
你也可以在手机上动态创建图片,我将其作为读者的练习。

这个解决方案比已接受的解决方法要简单得多,在Swift 5 / watchOS 5中仍然有效。不确定为什么这不是被接受的答案。 - John Robi

4

目前WatchKit中没有进度条。

解决方法

一个相当简单的解决方法是设计一个WKInterfaceImage,它看起来像一个进度条,同时提供逐步填充进度条的图片。然后更新当前显示的图像,以匹配用户位置已经进展的百分比。


1
这将是一个非常小的图像集,具有压缩和其他所有功能。相信我,100张图片不会占用太多空间。任何具有动画效果的应用程序都会在其包中拥有数百甚至数千张图像来创建这些动画。此外,如果您真的很关心,您可以创建20张图像,并仅以5%的增量显示更新。 - cnoon

0

我找到了一种更简单的方法。

您可以使用两个组进行操作。该过程与Fizker的答案类似。

  1. 在您想要进度条的位置添加一个组。该组的大小应为100%,高度固定。
  2. 使用相同的固定高度将另一个组添加到上一个组中。
  3. 为第二个组创建一个出口。(例如:progressGroup)
  4. 在您的代码中调用progressGroup.setRelativeWidth(CGFloat(currentValue / maxValue), withAdjustment: 0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接