问题标签 [clockkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
112 浏览

watchkit - ClockKit 是否支持自定义文本大小的复杂性?

我正在为 Apple Watch 开发计时器应用程序,并希望提供一个带有计时器剩余持续时间的循环复杂功能。

以下是一些示例代码,您可以在 Xcode 12 中预览:

ClockKit 应用默认文本大小,这会导致超过三个字符的文本被截断:

复杂的截断文本

我想知道是否可以缩小文本以适合圆圈内?我知道我也可以使用 SwiftUI 来绘制内容,但这仅支持Graphic复杂槽。

0 投票
0 回答
39 浏览

objective-c - 将 getComplicationDescriptorsWithHandler 用于objective-c Watch App

我正在尝试找出如何使用该方法:

用于 Objective-C 手表应用程序的 getComplicationDescriptorsWithHandler。

不幸的是,Apple 的文档:(https://developer.apple.com/documentation/clockkit/clkcomplicationdatasource/3555131-getcomplicationdescriptorswithha?language=objc

即使选择了“语言 Objective-C”,也使用 Swift 而不是 Objective-C 给出示例。我也无法从 Objective-C 中的 Internet 搜索中找到任何帮助。任何人都有如何使用此方法以及在 Objective-C 中设置单个并发症描述符的真实示例?

0 投票
0 回答
22 浏览

ios - 有效处理多个 Apple Watch 并发症的数据调用的最佳方法?

当 Apple Watch 首次出现并发症时,我们只有一个并发症需要处理。推荐的方法之一是在后台任务中从网络加载数据,保存UserDefaults最新数据,然后在其中查找最新数据UserDefaultsgetCurrentTimelineEntry显示在复杂功能中。

这适用于 1 种并发症,但我现在正在处理 3 种可用的并发症。因此,对于用户未启用的复杂功能,不断加载数据是没有效率的。所以我现在想知道将网络调用移动到getCurrentTimelineEntry是否会更有效,因为如果调用了并发症,只有数据会加载?(我依稀记得苹果公司说这不鼓励)。

或者是否有其他方法可以参考用户正在使用的并发症,然后打开它们并仅调用在保存到 UserDefaults 的后台任务中启用的那些(并查找getCurrentTimelineEntry以显示并发症)?

0 投票
1 回答
226 浏览

swiftui - 在 swiftUI 中使用 onContinueUserActivity 处理启动并发症时的 ActivityType 是什么

我有一个 SwiftUI Apple Watch 应用程序。当用户点击复杂功能时,我想显示适当的视图。我想我可以使用 onContinueUserActivity 修饰符来做到这一点,但我找不到合适的 ActivityType。

我在下面命名它CLKComplicationTapActivityType,但我需要真正的常数。

0 投票
0 回答
8 浏览

xcode - 为 ClockKit Complications 编写测试

Xcode从 Xcode 12.5开始支持XCTestwatchOS 目标的测试用例,但是没有给出示例代码,也没有给出关于该主题的 WWDC 讨论。

ClockKit框架本质上是非常严格的,这使得在不编写专门用于测试的抽象的情况下针对您的代码生成规范是不切实际的。

例如,不可能构造带有或指定的任意CLKComplication实例,因为没有对任一属性的公共写访问权,也没有接受它们的构造函数。传递一个实例(到和其他函数)是系统如何从您的并发症中请求更新。familyidentifierCLKComplicationgetCurrentTimelineEntry

解决这个问题的最佳方法是什么?

我可以看到这些路径,但也许我错过了一些东西;

  1. 更新我ComplicationController以接受协议,基于(并实现)的公共 API CLKComplication,并从我的测试中传递它
  2. 抽象出函数ClockKit将调用 my ComplicationController,因此存在接受各个参数的函数版本,这些参数又由“真实”API调用
  3. 找到一种CLKComplication在测试中覆盖实数属性的方法,特别是