Добавление GraphicCircular Apple Watch усложняет существующий проект Xcode - PullRequest
0 голосов
/ 12 октября 2018

Я не могу найти в сети документацию, объясняющую, как добавить какие-либо новые «графические» сложности, доступные в Watch Series 4. Вот мои шаги:

(1) добавлен класс, соответствующийCLKComplicationDataSource (код ниже) (2) установить конфигурацию усложнений так, чтобы она указала на (1) и папку ресурсов Complications enter image description here (4) экспортировать png из Sketch и перетащить в папку ресурсов Complications в Modular / Utilitar./ Круговые графические (угловые, лицевые и круглые) заполнители в папке ресурсов Complications не принимают pngs (только pdfs). enter image description here После всего этого старые модульные утилиты и круговые сложности работают нормально, однако изображения(PDF-файлы) для графики (угол, рамка и круговой) не отображаются на устройстве enter image description here

import Foundation
import ClockKit

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

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

                let template = CLKComplicationTemplateCircularSmallRingImage()
                guard let image = UIImage(named: "Circular") else { handler(nil); return}
                template.imageProvider = CLKImageProvider(onePieceImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else if complication.family == .utilitarianSmall {

                let template = CLKComplicationTemplateUtilitarianSmallRingImage()
                guard let image = UIImage(named: "Utilitarian") else { handler(nil); return}
                template.imageProvider = CLKImageProvider(onePieceImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else if complication.family == .modularSmall {

                let template = CLKComplicationTemplateModularSmallRingImage()
                guard let image = UIImage(named: "Modular") else { handler(nil); return}
                template.imageProvider = CLKImageProvider(onePieceImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else if complication.family == .graphicCircular {
                let template = CLKComplicationTemplateGraphicCircularImage()
                guard let image = UIImage(named: "GraphicCircular") else { handler(nil); return}
                template.imageProvider = CLKFullColorImageProvider(fullColorImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else if complication.family == .graphicBezel {
                let template = CLKComplicationTemplateModularSmallRingImage()
                guard let image = UIImage(named: "GraphicBezel") else { handler(nil); return}
                template.imageProvider = CLKImageProvider(onePieceImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else if complication.family == .graphicCorner {
                let template = CLKComplicationTemplateGraphicCornerCircularImage()
                guard let image = UIImage(named: "GraphicCorner") else { handler(nil); return}
                template.imageProvider = CLKFullColorImageProvider(fullColorImage: image)
                let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
                handler(timelineEntry)

            } else {

                handler(nil)

            }
        } else {
            // Fallback on earlier versions
        }
    }



}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018
  1. преобразовать следующее:

    • Имя UIImage: «GraphicBezel» -> «Complication / GraphicBezel»
    • Имя UIImage: «GraphicCircular» -> «Complication/ GraphicCircular "
    • Имя UIImage:" GraphicCorner "->" Complication / GraphicCorner "
  2. Активы изображений, Набор конфигурационных изображений> Ширина экрана> Ширина по отдельности иустановите размер изображения в область просмотра (38 мм, 40 мм, 42 мм, 44 мм).

это подойдет для моего случая.

0 голосов
/ 13 октября 2018

Моя проблема заключалась в том, что я не реализовывал getLocalizableSampleTemplate(for:withHandler:) https://developer.apple.com/documentation/clockkit/clkcomplicationdatasource/1650686-getlocalizablesampletemplate, хотя он был указан как необязательный и не входил в обязательные методы CLKComplicationDataSource, когда его реализация заставляла мои изображения появляться в сложностях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...