对于macOS 10.14 Mojave中的暗模式,大多数系统颜色是半透明的。这是为了将控件颜色与窗口背景相匹配,窗口背景又略微着色以匹配桌面图片。
现在,在构建具有重叠CoreAnimation图层的视图时,事情会变得混乱。例:
这是使用CALayers构建的自定义滑块。垂直轨道是旋钮层下面的一层。这是我设置颜色的方式:
- (void)updateColors // Called from updateLayer()
{
self.tickmarkLayer.strokeColor = [NSColor tertiaryLabelColor].CGColor;
self.tickmarkLayer.lineWidth = 1.0;
self.trackLayer.backgroundColor = [NSColor controlBackgroundColor].CGColor;
self.trackLayer.borderColor = [NSColor tertiaryLabelColor].CGColor;
self.trackLayer.borderWidth = 1.0;
self.sliderLayer.backgroundColor = [NSColor controlColor].CGColor;
}
当然,我不希望旋钮透明,我。即轨道层不应该透过。如何在保留动态色调的同时解决这个问题?
理想情况下,可以使用当前色调访问“有效”系统颜色,而不是透明度。但我没有找到任何API这样做。
将阴影应用于具有透明(系统)颜色的图层时会出现类似问题。
谢谢!
NSColor的colorWithAlphaComponent:
能帮到你吗?
即
self.sliderLayer.backgroundColor = [[NSColor controlColor] colorWithAlphaComponent:1.0f].CGColor;
它看起来像黑暗模式将控件颜色的alpha分量设置为:qazxsw poi
我尝试的事情:
请参阅0.247059
中的“使用已建立的方法更新自定义视图”以确保颜色动态更新。