并发症家族支持 - 如果不支持则不显示并发症家族
Complication Family support- don't show Complication Family if not supported
我想知道如果我不支持它,如何不显示它。
示例:超大表盘
在 ComplicationController.swift
的 getLocalizableSampleTemplate
和 getCurrentTimelineEntry
方法中,我只是在打开 complication.family
超大时传入 handler(nil)
:
case .extraLarge:
handler(nil)
但这一定是不对的,也只能这样,因为我的Extra Large并发症还是可以选择的:
但是明显不行或者没有数据显示:
有人知道我错过了什么吗?谢谢!
更新:
我的 ComplicationController.swift
的 getComplicationDescriptors
:
func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) {
let oneSupported = [
CLKComplicationFamily.circularSmall,
.modularSmall,
.utilitarianSmall,
.modularLarge,
.utilitarianLarge,
.graphicExtraLarge,
.graphicCircular
]
let twoSupported = [
CLKComplicationFamily.circularSmall,
.modularSmall,
.utilitarianSmall,
.utilitarianSmallFlat,
.extraLarge,
.graphicBezel,
.graphicCircular,
.graphicCorner,
.graphicRectangular,
.modularLarge,
.utilitarianLarge
]
let descriptors = [
CLKComplicationDescriptor(identifier: ComplicationIdentifier.height.rawValue, displayName: "Complication 1", supportedFamilies: oneSupported)
// Multiple complication support can be added here with more descriptors
,
CLKComplicationDescriptor(identifier: ComplicationIdentifier.price.rawValue, displayName: "Complication 2", supportedFamilies: twoSupported)
]
// Call the handler with the currently supported complication descriptors
handler(descriptors)
}
这也是我的 WatchApp.swift
,它正在使用 SwiftUI 生命周期(除非我弄错了):
struct BlockWatchApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate
var body: some Scene {
WindowGroup {
NavigationView {
WatchView()
}
}
}
}
如果您使用 SwiftUI 生命周期构建 watchOS 应用程序,您可以使用 getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void)
方法设置支持的复杂功能。
要仅支持某些并发症,您可以在数组中定义要支持的并发症:
func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) {
let descriptors = [
CLKComplicationDescriptor(identifier: "complication", displayName: "App Name",
supportedFamilies: [CLKComplicationFamily.circularSmall,
CLKComplicationFamily.graphicBezel])
// Multiple complication support can be added here with more descriptors/
// Create a new identifier for each new CLKComplicationDescriptor.
]
// Call the handler with the currently supported complication descriptors
handler(descriptors)
}
此示例将仅显示您在 circularSmall
和 graphicBezel
并发症中的并发症。如果您想支持所有并发症,请使用 .allCases
.
如果您使用具有 AppDelegate
生命周期的 watchKit 构建您的应用程序,那么您可以在 WatchKit 扩展的 .plist 文件中定义您支持的复杂功能。您应该看到“ClockKit Complication - Supported Families”,然后您可以添加或删除所需的复杂功能支持。
我想知道如果我不支持它,如何不显示它。
示例:超大表盘
在 ComplicationController.swift
的 getLocalizableSampleTemplate
和 getCurrentTimelineEntry
方法中,我只是在打开 complication.family
超大时传入 handler(nil)
:
case .extraLarge:
handler(nil)
但这一定是不对的,也只能这样,因为我的Extra Large并发症还是可以选择的:
但是明显不行或者没有数据显示:
有人知道我错过了什么吗?谢谢!
更新:
我的 ComplicationController.swift
的 getComplicationDescriptors
:
func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) {
let oneSupported = [
CLKComplicationFamily.circularSmall,
.modularSmall,
.utilitarianSmall,
.modularLarge,
.utilitarianLarge,
.graphicExtraLarge,
.graphicCircular
]
let twoSupported = [
CLKComplicationFamily.circularSmall,
.modularSmall,
.utilitarianSmall,
.utilitarianSmallFlat,
.extraLarge,
.graphicBezel,
.graphicCircular,
.graphicCorner,
.graphicRectangular,
.modularLarge,
.utilitarianLarge
]
let descriptors = [
CLKComplicationDescriptor(identifier: ComplicationIdentifier.height.rawValue, displayName: "Complication 1", supportedFamilies: oneSupported)
// Multiple complication support can be added here with more descriptors
,
CLKComplicationDescriptor(identifier: ComplicationIdentifier.price.rawValue, displayName: "Complication 2", supportedFamilies: twoSupported)
]
// Call the handler with the currently supported complication descriptors
handler(descriptors)
}
这也是我的 WatchApp.swift
,它正在使用 SwiftUI 生命周期(除非我弄错了):
struct BlockWatchApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate
var body: some Scene {
WindowGroup {
NavigationView {
WatchView()
}
}
}
}
如果您使用 SwiftUI 生命周期构建 watchOS 应用程序,您可以使用 getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void)
方法设置支持的复杂功能。
要仅支持某些并发症,您可以在数组中定义要支持的并发症:
func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) {
let descriptors = [
CLKComplicationDescriptor(identifier: "complication", displayName: "App Name",
supportedFamilies: [CLKComplicationFamily.circularSmall,
CLKComplicationFamily.graphicBezel])
// Multiple complication support can be added here with more descriptors/
// Create a new identifier for each new CLKComplicationDescriptor.
]
// Call the handler with the currently supported complication descriptors
handler(descriptors)
}
此示例将仅显示您在 circularSmall
和 graphicBezel
并发症中的并发症。如果您想支持所有并发症,请使用 .allCases
.
如果您使用具有 AppDelegate
生命周期的 watchKit 构建您的应用程序,那么您可以在 WatchKit 扩展的 .plist 文件中定义您支持的复杂功能。您应该看到“ClockKit Complication - Supported Families”,然后您可以添加或删除所需的复杂功能支持。