具有iOS 13动态颜色的`CGContextSetStrokeColorWithColor`,在黑暗模式切换后不会自动刷新UI

时间:2019-10-16 07:12:39

标签: draw ios13

我一直在解决采用新的iOS 13动态颜色的任务,并且得到了一个实现,该实现使用CGContextSaveGStateCGContextSetStrokeColorWithColorCGContextAddPath等在屏幕。我认为是因为CGContextSetStrokeColorWithColor要求我通过CGColor的{​​{1}},所以我传递的颜色UIColor的“动态”本质基本上会破坏并且不再动态

有人知道如何处理使用[UIColor labelColor]进行绘制但又想利用并添加对新的iOS 13动态色彩的支持的情况吗?

1 个答案:

答案 0 :(得分:0)

事实证明这很容易。

我所拥有的是UIView,其中我拥有NSMutableArray个实例中的CALayer个实例,这些实例使用CGContextSetStrokeColorWithColor,并且传递了动态颜色,但传递了其{{1} }到CGColor。然后,我使用CGContextSetStrokeColorWithColor来设置那些layoutSublayersOfLayer实例中的.frame。在这种情况下,为了更新我将其传递给的CALayer实例的颜色,我必须覆盖CALayer的traitCollectionDidChange并调用UIView

setNeedsDisplay