tinted ImageProvider 在 Graphic Complication 中不提供着色颜色
tintedImageProvider does not provide tint color in Graphic Complication
我正在尝试为我的 Apple Watch 应用程序(即 Graphic Circular)创建图形复杂功能,但我 运行 遇到了一些问题。为了同时支持多色和有色表盘,我使用以下代码为我的复杂功能提供图像:
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类型的系统并发症似乎有一个略带灰色的背景,这使它们在黑暗的表盘环境中显得与众不同。我已将相同的背景颜色硬编码为全彩色图像,但当面部切换到色调模式时 - 我的并发症背景变成全黑。关于如何实现这种灰色背景效果有什么想法吗?
好吧,在反复阅读文档多次后,解决方案出现了 - 决定 post 一个答案,以防其他人发现这个解决方案像我一样不明显:
在支持具有全彩色复杂功能图像的多色表盘的图形复杂功能中,系统色调仅应用于 tintedImageProvider
的 twoPieceImageForeground
参数。简单地提供模板 onePieceImage
并不能解决问题。
创建两幅图像也解决了我关于图形圆形复杂功能中图像的灰色背景的问题的第二部分。为了解决这个问题,我创建了一个所需复杂尺寸的普通矩形图像,将其背景颜色设置为黑色,将 alpha 设置为 11%。将此图像作为 twoPieceImageBackground
参数传递给 tintedImageProvider
在去饱和时创建所需的灰色背景效果。
我正在尝试为我的 Apple Watch 应用程序(即 Graphic Circular)创建图形复杂功能,但我 运行 遇到了一些问题。为了同时支持多色和有色表盘,我使用以下代码为我的复杂功能提供图像:
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类型的系统并发症似乎有一个略带灰色的背景,这使它们在黑暗的表盘环境中显得与众不同。我已将相同的背景颜色硬编码为全彩色图像,但当面部切换到色调模式时 - 我的并发症背景变成全黑。关于如何实现这种灰色背景效果有什么想法吗?
好吧,在反复阅读文档多次后,解决方案出现了 - 决定 post 一个答案,以防其他人发现这个解决方案像我一样不明显:
在支持具有全彩色复杂功能图像的多色表盘的图形复杂功能中,系统色调仅应用于 tintedImageProvider
的 twoPieceImageForeground
参数。简单地提供模板 onePieceImage
并不能解决问题。
创建两幅图像也解决了我关于图形圆形复杂功能中图像的灰色背景的问题的第二部分。为了解决这个问题,我创建了一个所需复杂尺寸的普通矩形图像,将其背景颜色设置为黑色,将 alpha 设置为 11%。将此图像作为 twoPieceImageBackground
参数传递给 tintedImageProvider
在去饱和时创建所需的灰色背景效果。