Xcode tintedImageProvider для усложнения Apple Watch rectangularTemplate.imageProvider - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема, которую я безуспешно пытался решить самостоятельно целую вечность. Я использую документацию Apple и видео здесь Изучение тонированной графики c Сложности Я создал график c из кода, который создает png из данных, которые вписываются в квадрат на циферблате Apple Watch. В файле ComplicationController.swift у меня есть этот код

graphicRectangularImage = UIImage(cgImage: context.makeImage()!, scale: 2.0, orientation: .up)
...
rectangularTemplate.imageProvider = CLKFullColorImageProvider(fullColorImage: graphicRectangularImage)

и я установил конфиденциальность осложнений на handler(.hideOnLockScreen).

И это отлично работает для создания полноцветного изображения. И он скрывается при блокировке.

Mulitcolour locked and unlocked

Monochrome locked and unlocked

Итак, когда у пользователя разноцветное лицо это хорошо. Но если я добавлю два изображения вроде этого

graphicRectangularImage = UIImage(cgImage: context.makeImage()!, scale: 2.0, orientation: .up) 
twoPieceImageBackground = UIImage(cgImage: context.makeImage()!, scale: 2.0, orientation: .up) 
twoPieceImageForeground = UIImage(cgImage: context.makeImage()!, scale: 2.0, orientation: .up)  

let tintedImageProvider = CLKImageProvider(onePieceImage: graphicRectangularImage, twoPieceImageBackground: twoPieceImageBackground, twoPieceImageForeground: twoPieceImageForeground)  

rectangularTemplate.imageProvider = CLKFullColorImageProvider(fullColorImage: graphicRectangularImage, tintedImageProvider: tintedImageProvider)

Изображение переднего плана - это просто полоса и слова «Прошлые 7 дней:», поскольку это единственные два бита, которые я хочу выделить желтым. Фон - это остальная часть изображения, поэтому она может быть серой. Он отлично работает на многоцветном экране, но при использовании поставщика тонированных изображений изображение не скрывается при блокировке.

Tinted image provider locked and unlocked

Изображение не скрывается в заблокированном состоянии. Но он действительно ведет себя правильно, если вы снова измените цвет на многоцветный, это немного странно.

Заблокированное изображение, похоже, происходит из файла изображения, который я поместил в папку Assets для усложнения в разделе для осложнений, но у меня нет места для добавления заблокированного изображения для двухэлементного изображения, поэтому он просто использует то, что уже было, за исключением имени приложения, которое изменяется при блокировке.

Xcode image slots

Пожалуйста, помогите указать мне правильное направление, чтобы тонированное изображение переднего плана скрывалось, когда Apple Watch заблокированы.

...