提问人:jeanlain 提问时间:11/17/2023 更新时间:11/17/2023 访问量:12
如何使用drawlayer:inContext:使CALayer适应应用程序外观?
How to make CALayer adapt to the application appearance using drawlayer:inContext:?
问:
我有一个图层托管子类,它使用对象集作为其 .由于它不是图层支持的视图,因此它不会在 期间或期间重新绘制,而是在我调用其图层之后重新绘制。NSView
CALayer
layer
drawRect:
updateLayer
drawLayer:inContext:
setNeedsDisplay
问题在于该层必须适应应用程序外观(它使用系统对象),而 appkit 似乎无法管理这种情况。
苹果表示,需要在 或 期间设置图层的内容,否则颜色不会适应外观。
事实上,它们不会更新NSColor
drawRect:
updateLayer
drawLayer:inContext:
我使用的当前(丑陋的)解决方案是在方法中直接调用层(Apple 说我不应该这样做)(另一个视图,因为托管层的视图不会发送,因为它不是层支持的视图)。-display
updateLayer
updateLayer
调用图层而不是不起作用,因为图层不会在调用中重新绘制其内容,而是在调用之后重新绘制。setNeedsDisplay
display
updateLayer
还有其他解决方案吗?
答: 暂无答案
评论