问题标签 [apple-watch-complication]

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 回答
94 浏览

ios - WatchOS2事件并发症,如何在前一个事件的结束时间进入下一个事件?(getTimelineEntriesForComplication)

正如标题所说,在手表事件复杂功能 ModularLarge 结束时,就像 Apple 的日历复杂功能一样,事件是晚上 7 点到 7 点 10 分,然后下一个事件是晚上 8 点。所以在时间旅行,甚至在表盘本身上,当事件结束时间发生时,我不会步进/显示下一个事件(我在数组注释中有事件)。认为我只是错过了一些东西。注意:我对此有点陌生。这是我的代码。

所以在观看时间,7:11 的 TimeTravel 应该显示晚上 8 点事件,然后我希望将时间增量到拍摄时间,直到该事件。所以“-49分钟”这个代码有效:

最后,我们可以设置 body2TextProvider 的 tint(color) 吗?

太感谢了。麦克风

这是图片链接,本次活动于上午 9 点 10 分结束,所以请立即观看下午 12 点的活动! http://pics.derr.ws/watch.png

0 投票
1 回答
181 浏览

swift - 如何对 CLKComplicationServerActiveComplicationsDidChangeNotification 做出反应

关于有用的问题Force reload watchOS 2 Complications用户@alexeyvmp在评论CLKComplicationServerActiveComplicationsDidChangeNotification中提到您应该为事件添加观察者。

什么是创建这个观察者的好地方,它会是什么样子?我是从我的 ComplicationDataSource 还是在我的 InterfaceController 中创建它?我如何确保它不会一遍又一遍地重新创建?

我试图阅读如何在其中创建观察者,Swift但我很难弄清楚将它放在哪里。我目前有

任何帮助表示赞赏。

0 投票
1 回答
769 浏览

ios - 在 WatchKit 应用未运行时从 iOS 应用设置 WatchKit 应用的值

我已经知道如何使用 WCSession 的updateApplicationContext方法,但它只在我的 WatchKit 应用程序运行时才有效。

我需要将货币汇率从 iOS 应用程序传输到手表,以更新我的手表数据和复杂功能。

我有一个 API 可以获取 USD-CNY 和 USD-EUR 的汇率,并希望与手表共享(类似于NSUserDefaults持久数据的方式),因此它可以在我的并发症中显示“1 USD = 6.3 CNY”。

那么,我该如何实现呢?

0 投票
2 回答
474 浏览

swift - watchOS 3 getSupportedTimeTravelDirections

我正在尝试用 watchOS 3 的并发症更新我的 watchOS 2 应用程序。不幸的是,我不明白我在 ComplicationController 方面做错了什么。我总是收到以下错误(使用 Xcode 8 b6):

类型“ComplicationController”不符合协议“CLKComplicationDataSource”候选人具有不匹配类型“(CLKComplication,(CLKComplicationTimeTravelDirections)-> Void)->()”

代码:

我也试过:

这两种方法在 watchOS 3 上都给我一个错误,但在 watchOS 2 / Swift 2 上工作得很好。有人知道 Swift 3 关于这个功能有什么变化吗?

0 投票
1 回答
100 浏览

swift - 苹果手表应用程序是否有可能知道它是使用复杂界面启动的?

我正在编写一个带有多个控制器的简单应用程序。使用复杂界面运行应用程序后,我想跳过主视图控制器并立即传递到第二个。我知道如何执行此操作,但不知道如何获取应用程序使用 Complication 启动的信息。可能吗?如果是这样,怎么做?

0 投票
1 回答
90 浏览

ios - WatchKit Complication Modular Large Columns - 列宽

我不知道如何在 CLKComplicationTemplateModularLargeColumns 模板中调整列宽

我总是在第二列中以省略号结尾。

如何修复布局以便第二列可读?

在此处输入图像描述

0 投票
4 回答
2374 浏览

swift - WatchOS3 启动应用程序的复杂功能

我想为 watchOS 3 创建一个复杂功能,它只会启动我的应用程序。我使用 XCode 创建了 ComplicationController:

并为循环、模块化和实用资产添加了图像。但是当我运行 Watch 应用程序时,我无法为表盘选择我的复杂功能。我还需要做什么?

谢谢

格雷格

0 投票
2 回答
264 浏览

ios - 如何在 Apple Watch 模拟器上强制调用 getPlaceholderTemplate 以更新并发症预览

我在模拟器上安装应用程序时犯了一个错误,而没有设置我所有的并发症模板。正如文档所述, getPlaceholderTemplate 被调用一次,然后被缓存。

所以现在我已经设置了我的所有手表复杂功能模板,我想通过自定义模块化面来将它们发送出去。但是只有我最初创建的一个模板会显示出来,其余的都有白框。这只是我关心的静态模板。

我已经尝试从模拟器中删除应用程序,通过 Watch 应用程序将其删除,重新安装,但似乎仍然没有再次调用该函数来更新模板。有什么想法吗?谢谢。

0 投票
2 回答
576 浏览

performance - 更新复杂功能会逐渐降低 Apple Watch 应用程序在 watchOS3 中的性能

大约一周以来,我一直在强调这个问题,试图找出缓慢但稳定的 Apple Watch 应用程序性能下降的根源。在大约两天的时间里,我的应用程序的 UI 会变得越来越迟钝。我已将其缩小为复杂更新代码。即使我将并发症更新减少到绝对最低限度,这个问题仍然会发生,尽管比使用一些实际数据更新并发症要慢。我每 10 分钟更新一次并发症。一旦新数据到来,我只需执行

这反过来又调用:

这工作正常,新数据显示,但是当重复几十次时,主应用程序的 UI 响应开始显着下降,并且当它重复大约一百次时(这发生在不到一天的时间,更新时间为 10 分钟)用户界面确实显着变慢。

我对复杂结构没有什么特别的想法——没有时间旅行,只显示当前数据,一切都为此做好了准备。为了确保我没有看错地方,我做了一个每秒重新加载时间线的测试,在这个测试中,我的 getCurrentTimelineEntryForComplication 看起来像这样:

所以那里实际上什么都没有,只需将空处理程序发回即可。然而,即使在这种情况下,在大约一百次时间线重新加载后,主应用程序的 UI 也会明显变慢。

其他一些需要注意的事项:

  • 如果我不更新复杂功能,应用程序的 UI 性能永远不会降低,无论我打开它多少次,或者我使用它多久,或者数据获取代码在后台运行多少次。

  • 在模拟器中对此进行测试时,我无法让性能下降,但我可以始终看到来自并发症更新的小而稳定的内存泄漏(同样,无论我在内部进行多么简单的更新,都会发生这种情况getCurrentTimelineEntryForComplication 方法。

有没有其他人注意到这一点,有没有希望处理它?难道我做错了什么?目前,我确保仅在数据发生变化时更新并发症,但这只会推迟问题,而不是解决问题。

10月24日编辑

我在真正的手表上做了更仔细的测试,虽然之前由于某种原因我没有注意到与真正手表相关的内存泄漏,但我现在肯定看到它发生了。真实设备完全反映了在模拟器上看到的问题,只是使用了不同的初始内存分配量。

同样,我所做的只是在一个常量循环上调用 reloadTimelineForComplication,并使用来自缓存数据对象的单行文本更新复杂性,否则复杂性控制器将被剥离到最低限度。当复杂功能从表盘上移除时,内存泄漏可以预见地停止。

我的主要项目是用ObjectiveC编写的,但是我用一个用Swift制作的测试项目重复了测试,没有任何区别。此外,最新的 XCode 8.1 GM 和随模拟器提供的 watchOS 3.1 beta 以及在安装了 watchOS3.1 的真实手表上运行时,问题仍然存在。

2017 年 1 月 24 日 编辑

可悲的是,这个问题在 watchOS 3.1.3 中仍然存在,完全没有改变。与此同时,我联系了 Apple 的代码级支持,向他们发送了示例代码,他们确认问题存在,并告诉我提交错误报告。大约两个月前我确实提交了一份错误报告,但直到现在它仍然是未分类的,我猜这意味着还没有人看过它。

2017 年 1 月 31 日 编辑

Apple 已经在 watchOS3.2 beta 1 中解决了这个问题。我一直在模拟器和真实手表上测试它。一切都很好,没有内存泄漏或性能下降了。最后没有解决方法,直到他们决定修复它。

0 投票
2 回答
261 浏览

ios - 点击复杂功能后watchOS 3应用程序重新启动

我有一个使用分层导航的简单“计时器”watchOS 应用程序。我可以按下数字表冠返回手表跳板,然后点击应用程序图标并返回到我正在使用的同一个界面控制器。

如果我返回表盘并点击我的应用程序的复杂功能,应用程序将启动,但似乎已重新启动:我失去了当前状态。有什么办法可以防止这种情况发生吗?