我正在尝试为我的Apple Watch应用程序创建图形并发症(即图形通告),但遇到了一些问题。为了同时支持多色和有色表盘,我使用以下代码为复杂情况提供图像:
let graphicCircularTemplate = CLKComplicationTemplateGraphicCircularImage()
if let tintedImage = UIImage(named: "GraphicCircular"), let fullColorImage = UIImage(named: "GraphicCircularOrange") {
let tintedImageProvider = CLKImageProvider(onePieceImage: tintedImage)
var imageProvider = CLKFullColorImageProvider()
if #available(watchOSApplicationExtension 6.0, *) {
imageProvider = CLKFullColorImageProvider(fullColorImage: fullColorImage, tintedImageProvider: tintedImageProvider)
} else {
imageProvider = CLKFullColorImageProvider(fullColorImage: fullColorImage)
}
graphicCircularTemplate.imageProvider = imageProvider
}
现在我的fullColorImage
正在关注:fullColorImage
而相同大小的着色图像将作为模板图像呈现:tintedImage
在多色Infograph表盘中,全彩色图像看起来符合预期:multicolor
但是当我将表盘表面更改为选定的色度时,我的色度图像将呈现为纯白色,并且系统色度色不会应用于该色度:tint color
所以我的问题是我想念什么,为什么我的tintedImageProvider不提供任何色彩?
此外,我已经注意到,Graphic Circular类型的系统复杂性似乎具有略微的灰色背景,这使其在深色表盘环境中与众不同。我已经将相同的背景颜色硬编码为全彩色图像,但是当脸部切换为色调模式时,我的并发症的背景就完全变成了黑色。关于如何实现这种灰色背景效果的任何想法?
嗯,解决方案是在多次重复文档之后提出的-决定发布答案,以防其他人像我一样发现此解决方案不明显:
在支持多色表盘和全彩色复杂图像系统色彩的图形复杂性中,仅应用于twoPieceImageForeground
的tintedImageProvider
参数。仅提供模板onePieceImage
并不能解决问题。
创建两幅图像也解决了我关于图形圆复杂中图像的灰色背景的第二部分问题。为了解决这个问题,我创建了一个具有所需并发症大小的普通矩形图像,将其背景色设置为黑色,并将alpha设置为11%。将此图像作为twoPieceImageBackground
参数传递到tintedImageProvider
会在去饱和时创建所需的灰色背景效果。