C. *_*ith 5 cocoa core-animation objective-c nsview macos-mojave
使用 macOS 10.14 Mojave 中的暗模式,大多数系统颜色都是半透明的。那就是将控件颜色与窗口背景相匹配,而窗口背景又会稍微着色以匹配桌面图片。
现在,当使用重叠的 CoreAnimation 层构建视图时,事情会变得一团糟。例子:
这是一个用 CALayer 构建的自定义滑块。垂直轨道是旋钮层下方的一层。这是我设置颜色的方法:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
当然,我不希望旋钮是透明的,即轨道层不应透光。如何在保留动态色调的同时解决此问题?
理想情况下,可以访问具有当前色调且没有透明度的“有效”系统颜色。但我没有找到任何 API 来这样做。
将阴影应用于具有透明(系统)颜色的图层时会出现类似的问题。
谢谢!
小智 5
NSColorcolorWithAlphaComponent:对你有用吗?
IE
self.sliderLayer.backgroundColor = [[NSColor controlColor] colorWithAlphaComponent:1.0f].CGColor;
Run Code Online (Sandbox Code Playgroud)
看起来 darkMode 将控件颜色的 alpha 分量设置为: 0.247059
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |