如何自定义 Apple CareKit?

Posted

技术标签:

【中文标题】如何自定义 Apple CareKit?【英文标题】:How to customize Apple CareKit? 【发布时间】:2016-10-22 12:29:14 【问题描述】:

在 CareKit 中有 Care Card 和 Symptom tracker。我不明白如何自定义 Carecardviewcontroller 和 Symmetrytrackerviewcontroller。我不想使用这些视图控制器,但对使用这些视图控制器的组件感兴趣。没有明确的文档来探索这一点。

(来源:carekit.org)

【问题讨论】:

你能定制护理包吗? 【参考方案1】:

如果您是从 Swift 的角度来看的,那么必须承认 CareKit 与您想象的任何东西一样“非 Swifty”。 GitHub 站点当然是一个开始,但是在阅读那里的编程指南和实际实施解决方案之间存在着巨大的差距。对我来说,这肯定是一个漫长的过程!

也就是说,您可以通过使用 CareKit 提供的视图控制器委托函数向 CareKit 的无故事板方法添加自定义。

例如,假设您有一个应用程序会提醒您的用户执行两项干预活动,(1) 服用阿司匹林和 (2) 快走。如果用户打开护理卡并点击“服用阿司匹林”的事件图标(其中一个圆圈),则会触发 OCKCareCardViewControllerDelegate 中名为:

careCardViewController(_ viewController: OCKCareCardViewController,
                       didSelectButtonWithInterventionEvent: OCKCarePlanEvent)

在这种方法中,您可以选择您想要的任何视图控制器。例如。如果事件是为了服用阿司匹林,则显示一个视图控制器,其中显示一张阿司匹林桌子的照片,提醒它应该只包含 81 毫克的剂量,以及关于用水服用的建议。

当然,使用 CareKit 没有什么是轻松的。事实证明,如果点击圆形图标,您可能还想关闭 CareKit 调用事件完成的标准做法。这是通过从另一个名为的委托方法返回“false”来实现的:

careCardViewController( _ viewController: OCKCareCardViewController,
                        shouldHandleEventCompletionFor
                            interventionActivity: OCKCarePlanActivity )
                      -> Bool

我可以谨慎推荐一本书,名为开始 CareKit 开发。它是为早期版本的 Swift 编写的,您必须进行大量“翻译”才能让 Swift 3 能够正常工作。上次我在 GitHub 存储库中查看了与这本书也完全在这个早期版本中。如果您要求,APress 将提供更新到 Swift 3 的代码。在 Kindle 上,这本书有许多小故障,包括没有页码的索引,也没有指向相关文本的超链接,非常奇怪的格式选择使文本有时难以与代码区分开来,以及解决方案代码中偶尔出现的错误。尽管如此,如果没有这本书的帮助,我怀疑我在使用 CareKit 方面会取得任何进展。

【讨论】:

【参考方案2】:

我自己一直在寻找这个答案。

据我研究,您可以使用 UIAppearance 直观地自定义此屏幕。 和/或您可以使用它的行为从头开始创建一个像这样的新屏幕。

您可以查看 CareKit 源代码以获取相关提示:https://github.com/carekit-apple/CareKit/tree/master/CareKit/CareCard

你会注意到一些有趣的类/文件:

OCKCareCardWeekView OCKWeekLabels 视图 OCKHeartView OCKHeartButton OCKWeekViewController OCKHelpers

CareKit 通过代码绘制每个屏幕。你可以通过阅读代码来了解他们是如何做到的。 我们的想法是使用这些部分创建您自己的 ViewController,或者从头开始创建一个。

当然,它不像使用 CareCardViewController 那样简单,但这会让你到达那里。

【讨论】:

这有帮助。你能定制它吗? 是的,我创建了一个代码分支并设法更改代码以启用覆盖某些 UI 类。

以上是关于如何自定义 Apple CareKit?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apple 自定义 UITabBarItem 图像?

如何像 Apple Pro Apps 一样自定义 NSMenu?

如何在 Apple Watch 上绘制自定义图形?

android中是不是有与Apple的carekit和researchkit等效的框架? [关闭]

SignIn with Apple 的自定义圆形按钮

通过 Apple 商务管理更新自定义 App