5

如果我不支持它,我想知道如何不显示并发症系列。

示例:超大表盘

InComplicationController.swift和方法我只是在打开Extra LargegetLocalizableSampleTemplategetCurrentTimelineEntry传入 a :handler(nil)complication.family

 case .extraLarge:
     handler(nil)

但这一定是不对的,也不是全部,因为我的特大号并发症仍然可以选择:

在此处输入图像描述

但它显然不起作用或有任何数据要显示:

在此处输入图像描述

有谁知道我错过了什么?谢谢!

更新:

ComplicationController.swiftgetComplicationDescriptors

    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()
        }
    }
}

}

4

1 回答 1

7

如果您使用 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)
}

这个例子只会显示你的并发症circularSmallgraphicBezel并发症。如果您想支持所有并发症,请使用.allCases.

如果您使用具有生命周期的 watchKit 构建您的应用程序,AppDelegate那么您可以在 WatchKit 扩展中的 .plist 文件中定义您支持的复杂性。您应该看到“ClockKit Complication - Supported Families”,然后您可以添加或删除您想要的并发症支持。

.plistImage

于 2020-12-23T19:34:31.993 回答