Rob*_*ert 5 ios swift watchos apple-watch-complication watchos-simulator
我使用 Xcode 的“iOS App with Watchkit App”模板创建了一个应用程序,进入TARGETS并检查了Complications Configuration > Supported Families > Graphic Corner. 我ComplicationController.swift在扩展中打开并修改了getCurrentTimelineEntry():
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText()
cornerTemplate.outerTextProvider = CLKSimpleTextProvider(text: "Outer")
cornerTemplate.innerTextProvider = CLKSimpleTextProvider(text: "Inner")
let entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: cornerTemplate)
handler(entry)
}
Run Code Online (Sandbox Code Playgroud)
我还修改了 getLocalizableSampleTemplate() 以提供示例,但这也不起作用:
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
let cornerTemplate = CLKComplicationTemplateGraphicCornerStackText()
cornerTemplate.outerTextProvider = CLKSimpleTextProvider(text: "Outer")
cornerTemplate.innerTextProvider = CLKSimpleTextProvider(text: "Inner")
handler(cornerTemplate)
}
Run Code Online (Sandbox Code Playgroud)
当我在模拟器或手机/手表上运行应用程序并选择复杂功能作为图形角之一时,我希望看到“外部”和“内部”。相反,它为一个显示我的应用程序的名称,为另一个显示“---”。
我究竟做错了什么?
这是我当前正在运行的一些代码:
var graphicCornerComplication: CLKComplicationTimelineEntry? {
guard #available(watchOSApplicationExtension 5.0, *) else {
return nil
}
let innerTextProvider = CLKSimpleTextProvider(text: "Inner")
let outerTextProvider = CLKSimpleTextProvider(text: "Outer")
let template = CLKComplicationTemplateGraphicCornerStackText()
template.outerTextProvider = outerTextProvider
template.innerTextProvider = innerTextProvider
let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
return timelineEntry
}
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
你的getLocalizableSampleTemplate代码实现了吗?这应该是配置复杂功能时要做的第一件事。您应该准备好一些内容,以便当用户滚动浏览复杂功能栏并看到您的时立即显示。如果不这样做,这可能就是为什么您看到的是破折号而不是您想要的文本。
您的并发症数据源是否正确分配?在 下Targets > Your WatchKit Extension > Complications Configuration > Data Source Class,确保已分配 ComplicationController。
如果您使用旧版本的 WatchOS,您的条目可能会为零。
编辑 - 澄清一下,graphicCornerComplication这只是我添加到一些模型中的一个属性,以便我只需在它们上调用graphicCornerComplication 即可快速获取时间线条目。在使用中,它看起来像这样:
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
switch complication.family {
case .graphicCorner:
let graphicCornerComplication = dataModel.graphicCornerComplication
handler(graphicCornerComplication)
default:
handler(nil)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |