并发症图像是白盒子 - watchOS 2 ClockKit

时间:2015-12-02 05:18:13

标签: ios swift apple-watch watch-os-2

我试图将图像显示为Apple Watch脸上的复杂功能。我已经尝试了.jpg和.png文件。我相信用于使复杂功能正常工作的代码是正确的,但由于某种原因,图像会像白色一样出现白色:

enter image description here

我的代码如下:

var template: CLKComplicationTemplate? = nil

let temporaryTemplate = CLKComplicationTemplateModularSmallSimpleImage()
let theImage = UIImage(named: "testImage")!.imageWithRenderingMode(.AlwaysTemplate)

let imager = CLKImageProvider(onePieceImage: theImage)
temporaryTemplate.imageProvider = imager

template = temporaryTemplate

我知道图像被视为“仅限alpha”的并发症,但我认为这是由系统自动完成的。我在这里错过了一步吗?

3 个答案:

答案 0 :(得分:4)

你是对的,你的代码一切正确,证据是白色方块,这意味着问题出现在图像中。

从12:10开始仔细观察the video。简而言之,您必须使用alpha通道创建单色png图像,系统当然无法为您完成。下面是示例,您可以将其替换为图像并查看结果:

enter image description here

另请附上您的图片以便查看。

答案 1 :(得分:1)

我已使用指南中提到的图像进行并发症。以下是我的代码。它适用于我,删除渲染模式部分并尝试。我附上了一张我使用的样本图片。enter image description here

    let template = CLKComplicationTemplateModularLargeStandardBody()
    let image = UIImage(named: imageName[![enter image description here][1]][1])

    template.headerImageProvider =
        CLKImageProvider(onePieceImage: image!)
    template.headerTextProvider = CLKSimpleTextProvider(text: headerText)

答案 2 :(得分:0)

我承认我不会观看WWDC视频或阅读Apple文档...... 我尝试的东西通常都有用。

因此,在看到这个错误并使用图像后,我有了一个想法,它已经淘汰了。即使我不支持前进或后退,我也必须返回时间线。

它解决了出现白盒图像而不是应用程序图标的问题。

- (void)getCurrentTimelineEntryForComplication:(CLKComplication *)complication
                               withHandler:(void(^)(CLKComplicationTimelineEntry * __nullable))handler {
[self getLocalizableSampleTemplateForComplication:complication
                                      withHandler:^(CLKComplicationTemplate * _Nullable complicationTemplate) {
                                          CLKComplicationTimelineEntry* entry = [CLKComplicationTimelineEntry entryWithDate:[NSDate date]
                                                                                                       complicationTemplate:complicationTemplate];
                                          handler(entry);
                                      }];}