iOS WatchOS5 - 如何为手表应用程序支持多个复杂功能系列?
iOS WatchOS5 - How to support more than one complication family for a watch app?
我的 Apple Watch 应用程序有一个复杂功能,我想添加第二种样式。我提供了一个非常基本的原型,但在表盘上看不到它可供选择。所以我正在尝试解决问题:
我的应用程序可以支持多个复杂功能吗? 我可以在表盘上同时设置两个复杂功能 运行 吗?(或者是非此即彼的情况,如果我有一个,iOS 会不显示第二个?)我尝试添加一个新的表盘,但它不允许我。
CLKComplicationTemplateModularSmallRingText
是 ModularSmall
类型并发症的有效模板吗?
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
if complication.family == .modularSmall {
let template = CLKComplicationTemplateModularSmallRingText()
template.ringStyle = .open
template.fillFraction = 0.3
let testProvider = CLKSimpleTextProvider(text: "TST", shortText: "S")
sleep.tintColor = UIColor.green
template.textProvider = testProvider
template.tintColor = UIColor.green
let entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
// Pass the entry to ClockKit.
handler(entry)
}
else if complication.family == .graphicRectangular {
let template = CLKComplicationTemplateGraphicRectangularLargeImage()
//this complication works...
}
占位符模板目前相同:
func getPlaceholderTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// Pass the template to ClockKit.
if complication.family == .modularSmall {
let template = CLKComplicationTemplateModularSmallRingText()
//...
我在并发症占位符文件中看到一个错误(但我正在 44 毫米设备上测试)- 将修复它并查看发生了什么。我是否为模块化复杂功能返回了错误的图像或错误的模板类型?我要圆环规
原来我被苹果的文档误导了。我需要使用 GraphicCircular complication(WatchOS5 中的新功能)类型而不是模块化(旧表盘)
func circularTemplate() -> CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText{
let template = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText()
let gauge = CLKSimpleGaugeProvider(style: .ring, gaugeColor: UIColor.green), fillFraction: 0.3)
template.gaugeProvider = gauge
let random = arc4random() % 999
let middle = CLKSimpleTextProvider(text: "4.5", shortText: "4")
middle.tintColor = kRGBColorFromHex(0x657585)
template.tintColor = kRGBColorFromHex(0x657585)
template.centerTextProvider = middle
let bottom = CLKSimpleTextProvider(text: "-\(random)", shortText: "1..")
template.bottomTextProvider = bottom
return template
}
新款式:
旧样式:
我的 Apple Watch 应用程序有一个复杂功能,我想添加第二种样式。我提供了一个非常基本的原型,但在表盘上看不到它可供选择。所以我正在尝试解决问题:
我的应用程序可以支持多个复杂功能吗? 我可以在表盘上同时设置两个复杂功能 运行 吗?(或者是非此即彼的情况,如果我有一个,iOS 会不显示第二个?)我尝试添加一个新的表盘,但它不允许我。
CLKComplicationTemplateModularSmallRingText
是 ModularSmall
类型并发症的有效模板吗?
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
if complication.family == .modularSmall {
let template = CLKComplicationTemplateModularSmallRingText()
template.ringStyle = .open
template.fillFraction = 0.3
let testProvider = CLKSimpleTextProvider(text: "TST", shortText: "S")
sleep.tintColor = UIColor.green
template.textProvider = testProvider
template.tintColor = UIColor.green
let entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
// Pass the entry to ClockKit.
handler(entry)
}
else if complication.family == .graphicRectangular {
let template = CLKComplicationTemplateGraphicRectangularLargeImage()
//this complication works...
}
占位符模板目前相同:
func getPlaceholderTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// Pass the template to ClockKit.
if complication.family == .modularSmall {
let template = CLKComplicationTemplateModularSmallRingText()
//...
我在并发症占位符文件中看到一个错误(但我正在 44 毫米设备上测试)- 将修复它并查看发生了什么。我是否为模块化复杂功能返回了错误的图像或错误的模板类型?我要圆环规
原来我被苹果的文档误导了。我需要使用 GraphicCircular complication(WatchOS5 中的新功能)类型而不是模块化(旧表盘)
func circularTemplate() -> CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText{
let template = CLKComplicationTemplateGraphicCircularOpenGaugeSimpleText()
let gauge = CLKSimpleGaugeProvider(style: .ring, gaugeColor: UIColor.green), fillFraction: 0.3)
template.gaugeProvider = gauge
let random = arc4random() % 999
let middle = CLKSimpleTextProvider(text: "4.5", shortText: "4")
middle.tintColor = kRGBColorFromHex(0x657585)
template.tintColor = kRGBColorFromHex(0x657585)
template.centerTextProvider = middle
let bottom = CLKSimpleTextProvider(text: "-\(random)", shortText: "1..")
template.bottomTextProvider = bottom
return template
}
新款式:
旧样式: