ios - iOS 14 Widgets 具有更强大的配置能力
问题描述
我想为我的 iOS 14 小部件添加更多高级配置选项。这是我一直在使用的:
struct WidgetConfig {
let id: UUID
let name: String
let backgroundColor: Color?
let backgroundImage: Data?
let fontColor: Color
let fontStyle: Font.Design
let accentColor: Color
}
用户可以在应用程序中创建配置。
我尝试将配置存储在 CoreData 中,但在 IntentHandler 中获取它们非常缓慢且不可靠。小部件通常只是呈现黑色。
实施这一点的更好策略是什么?
解决方案
自定义小部件的官方方法是使用 Siri 意图文件。这将启用您在长按小部件并选择编辑(小部件翻转)时看到的选项。
为了使用户可以轻松访问最相关的信息,小部件可以提供可自定义的属性。例如,用户可以为股票报价小部件选择特定股票,或为包裹递送小部件输入跟踪号。小部件通过使用自定义意图定义来定义可自定义的属性,这与 Siri 建议和 Siri 快捷方式用于自定义这些交互的机制相同。要将可配置属性添加到您的小部件:
- 向您的 Xcode 项目添加定义可配置属性的自定义意图定义。
- 在您的小部件中使用
IntentTimelineProvider
将用户的选择合并到您的时间线条目中。- 如果属性依赖于动态数据,请实现 Intents 扩展。
– 来自 Apple 的文章:制作可配置的小部件
我还可以推荐一个关于该主题的详细 WWDC 会议:https ://developer.apple.com/wwdc20/10194
推荐阅读
- css - 使用 css-grid 创建矩阵
- django - 带有微服务的 Django Lambda,在 Lambda 函数中打破 Django 项目
- c# - 为什么我的多线程代码没有更快?
- window - 任何逻辑关闭
- javascript - 难以让 if...else 语句在函数内部工作
- c - VTIME 和 VMIN 似乎没有改变 posix read() 调用的阻塞行为
- python - 没有 setup.py 的 Sphinx 构建
- node.js - 如何渲染发送数据的 XML 页面 NODEJS
- rust - 访问没有 sudo 的 FUSE 目录
- ios - 为什么在 Swift 中将日期从字符串对象转换为日期对象始终为零