我使用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)
}
我还修改了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)
}
当我在模拟器或手机/手表上运行应用程序并选择复杂功能作为图形角之一时,我希望看到“外部”和“内部”。相反,它显示我的应用程序的名称为一个和“---”为另一个。
我究竟做错了什么?
这是我目前正在使用的一些代码:
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
}
一些注意事项:
getLocalizableSampleTemplate
代码?这应该是配置并发症时首先要做的事情。当用户滚动复杂插槽并查看您的插件时,您应该准备好立即显示。如果你不这样做,那可能就是你看到破折号而不是你想要的文字的原因。Targets > Your WatchKit Extension > Complications Configuration > Data Source Class
下,确保已分配ComplicationController。编辑 - 为了澄清,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)
}
}