3

Я хотел бы создать сложность для watchOS 3, которая просто запустит мое приложение. Я использовал XCode для создания ComplicationController:WatchOS3 Усложнение, которое запускает приложение

class ComplicationController: NSObject, CLKComplicationDataSource 
{ 

    // MARK: - Timeline Configuration 

    func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) { 
     handler([.forward, .backward]) 
    } 

    func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { 
     handler(nil) 
    } 

    func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { 
     handler(nil) 
    } 

    func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) { 
     handler(.showOnLockScreen) 
    } 

    // MARK: - Timeline Population 

    func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { 
     // Call the handler with the current timeline entry 
     handler(nil) 
    } 

    func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { 
     // Call the handler with the timeline entries prior to the given date 
     handler(nil) 
    } 

    func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { 
     // Call the handler with the timeline entries after to the given date 
     handler(nil) 
    } 

    // MARK: - Placeholder Templates 

    func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { 
     // This method will be called once per supported complication, and the results will be cached 
     handler(nil) 
    } 

} 

и добавленные изображения в циркуляре, Modular и утилитарных активов. Но когда я запускаю приложение «Наблюдение», я не могу выбрать свои осложнения для лица Watch. Что мне еще нужно делать?

Благодаря

Грег

ответ

7

Эти изменения кода необходимы:

func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) 
{ 
    handler([]) 
} 


func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) 
{ 
    if complication.family == .circularSmall 
    { 

     let template = CLKComplicationTemplateCircularSmallRingImage() 
     template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Circular")!) 
     let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template) 
     handler(timelineEntry) 

    } else if complication.family == .utilitarianSmall 
    { 

     let template = CLKComplicationTemplateUtilitarianSmallRingImage() 
     template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Utilitarian")!) 
     let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template) 
     handler(timelineEntry) 

    } else if complication.family == .modularSmall 
    { 

     let template = CLKComplicationTemplateModularSmallRingImage() 
     template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Modular")!) 
     let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template) 
     handler(timelineEntry) 

    } else { 

     handler(nil) 

    } 

} 


func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) 
{   
    switch complication.family 
    { 
     case .circularSmall: 
      let image: UIImage = UIImage(named: "Circular")! 
      let template = CLKComplicationTemplateCircularSmallSimpleImage() 
      template.imageProvider = CLKImageProvider(onePieceImage: image) 
      handler(template) 
     case .utilitarianSmall: 
      let image: UIImage = UIImage(named: "Utilitarian")! 
      let template = CLKComplicationTemplateUtilitarianSmallSquare() 
      template.imageProvider = CLKImageProvider(onePieceImage: image) 
      handler(template) 
     case .modularSmall: 
      let image: UIImage = UIImage(named: "Modular")! 
      let template = CLKComplicationTemplateModularSmallSimpleImage() 
      template.imageProvider = CLKImageProvider(onePieceImage: image) 
      handler(template) 
     default: 
      handler(nil) 
    } 
} 

Кроме того, вы должны предоставить изображения в качестве активов в расширении.

Смежные вопросы