joe*_*ick 6 macos cocoa objective-c appkit nsvisualeffectview
我想使用NSVisualEffectView
黑暗的活力,但我觉得在某些情况下效果太苍白,所以我想让背景变暗.
这是一个示例应用程序,使用NSBox
视图提供更暗的背景.
我们可以看到NSBox
"主要"外观设法覆盖背景,按钮快乐地位于其上方.但是,在NSBox
自定义外观上,按钮似乎通过背景"剪切"到下面的视觉效果视图.
我已经尝试了子类化NSVisualEffectView
和覆盖-drawRect:
,用不同的颜色填充它,结果是一样的.
有没有办法在其他视图上叠加充满活力的控件?
视觉效果视图似乎有两个重要的层:背景和色调。将这两个设置为“正确的”黑色似乎可以解决问题,但只要边界发生变化,您就需要这样做。
for (CALayer *sublayer in self.vibrancyView.layer.sublayers) {
if ([sublayer.name isEqualToString:@"Backdrop"]) {
NSLog(@"Backdrop: %@", sublayer.backgroundColor);
sublayer.backgroundColor = [NSColor colorWithRed:0 green:0 blue:0 alpha:0.45].CGColor;
} else if ([sublayer.name isEqualToString:@"Tint"]) {
NSLog(@"Tint: %@", sublayer.backgroundColor);
sublayer.backgroundColor = [NSColor colorWithRed:0 green:0 blue:0 alpha:1].CGColor;
}
}
Run Code Online (Sandbox Code Playgroud)