tintColor 不适用于 watchOS 5 复杂功能

Posted

技术标签:

【中文标题】tintColor 不适用于 watchOS 5 复杂功能【英文标题】:tintColor not working on watchOS 5 complication 【发布时间】:2018-12-25 22:02:53 【问题描述】:

对于 watchOS 5 和 Apple Watch Series 4,我遇到了一些无法正确使用 tintColor 的问题。相反,它们只显示白色文本。同一张脸上的其他第 3 方并发症显示了它们的颜色。

除了在图形圆形复杂功能的leadingTextProvidertrailingTextProvider 上使用tintColor 之外,还有什么技巧吗?

我正在使用 Objective-C 以防万一。

【问题讨论】:

似乎只有原生的并发症才能有自己的颜色。因此,如果不使用私有 API,就无法使用彩色文本。你说有第三方并发症显示了他们的颜色。你能说出一个吗? 我知道该怎么做。看看我的新帖子。 【参考方案1】:

你可以用CLKSimpleTextProvider 做到这一点,诀窍是你不能用CLKTextProvider 做到这一点。

例如,

t.leadingTextProvider =  
    let t = CLKSimpleTextProvider(text: String(6))
    t.tintColor = .red

    return t
()

有效

t.leadingTextProvider =  
    let t = CLKTextProvider(format: String(6))
    t.tintColor = .red

    return t
()

不起作用。

In Apple's Documents of CLKTextProvider,上面写着

您不会自己创建此类的实例。相反,您可以根据您尝试创建的文本数据类型来创建适当子类的实例。您还可以使用 textProviderWithFormat: 类方法创建由格式字符串和来自其他文本提供程序的数据构造的通用文本提供程序。

此外,您还需要一个允许着色的表盘,就像我的一样。

Xcode 11.0 (11A420a) watchOS 模拟器 6.0

【讨论】:

【参考方案2】:

您是否有可能错误地初始化了您的UIColor?能出示一下相关代码吗?

一个常见的错误是使用整数(例如 0-255)作为 UIColor 的 RGB 值(请参阅 this question)。

【讨论】:

以上是关于tintColor 不适用于 watchOS 5 复杂功能的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView的tintColor不适用于storyboard,但可以使用代码

本地通知不适用于独立 WatchOS 应用程序

WatchOS 动态通知不适用于 Xcode 11.1 及更高版本 - 未调用 didReceive

NSUserDefaults 不适用于 Watch OS2 的 Xcode beta

色调颜色适用于本机颜色,但不适用于图案图像中的颜色

WatchOS 5 如何在 WatchOS 5 中测试未来时间的复杂性,因为 Time Travel 已被删除?