iOS WatchOS5 — Как поддерживать более одного семейства усложнений для приложения для часов?

У меня есть одно усложнение, работающее для моего приложения 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 мм аппарате) - исправим и посмотрим что к чему. Я возвращаю неправильное изображение или неправильный тип шаблона для модульной сложности? Я хочу круглый калибр-кольцо

введите здесь описание изображения


person Alex Stone    schedule 25.02.2019    source источник


Ответы (1)


Оказывается, меня ввела в заблуждение документация Apple. Мне нужно было использовать усложнение GraphicCircular (новое в 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
}

Новый стиль:

введите здесь описание изображения

Старый стиль: введите здесь описание изображения

person Alex Stone    schedule 25.02.2019