我正在开发一个Swift 4 macOS应用程序,它涉及一个充满活力的黑暗窗口和一个窗口内的NSVisualEffectView。目前,NSVisualEffectView的颜色与窗口颜色不完全匹配,但它非常接近。
如何让NSVisualEffectView的颜色与窗口完美匹配?我的目标是让它提供的模糊效果仅在内容位于其下方时显示,并使其与窗口的颜色匹配才会产生此效果。我已经包含了当前正在发生的事情的图像。您可能需要放大图像并调高显示亮度以查看差异。虽然在这个屏幕截图中看起来很小,但NSVisualEffectView横跨整个窗口,而在Mac的Retina显示屏上,差异很明显。
我已尝试将NSVisualEffectView的背景颜色设置为清除,但这没有用。
visualEffectView.wantsLayer = true
visualEffectView.layer?.backgroundColor = NSColor.clear.cgColor
我对此有任何建议表示感谢!
答案 0 :(得分:0)
您可以将不透明的NSTextField作为子视图添加到NSVisualEffectView中。
- (void)addBehindView{
MSVisualEffectView *visualEffect = [[MSVisualEffectView alloc]initWithFrame:NSMakeRect(15, 15, 235, 300)];
visualEffect.blendingMode = NSVisualEffectBlendingModeBehindWindow;
visualEffect.state = NSVisualEffectStateActive;
//NSVisualEffectMaterialUltraDark NSVisualEffectMaterialDark
visualEffect.material = NSVisualEffectMaterialMediumLight;
self.window.contentView = visualEffect;
self.visualEffect = visualEffect;
NSTextField *label = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 0, 400, 400)];
label.editable = NO;
label.stringValue = @"1243423";
label.backgroundColor = [self colorWithHexString:@"4075F0"];
label.alphaValue = 0.9;
[self.visualEffect addSubview:label];
}