Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 调整NSVisualEffectView模糊半径和透明度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

当NSVisualEffectView应用于NSWindow(Swift或Objective-C)时,是否可以调整模糊半径和透明度?我尝试了NSVisualEffectMaterial的所有变体(黑暗,中等,浅色) – 但这并没有削减它.在下图中,我使用了Apple的非公共API,左侧是CGSSetWindowBACkgroundBlurRadius,右侧是NSVisualEffectView.
@H_673_10@
当NSVisualEffectView应用于NSWindow(Swift或Objective-C)时,是否可以调整模糊半径和透明度?我尝试了NSVisualEffectMaterial的所有变体(黑暗,中等,浅色) – 但这并没有削减它.在下图中,我使用了Apple的非公共API,左侧是CGSSetWindowBACkgroundBlurRadius,右侧是NSVisualEffectView.

我试图看看左边的内容,但似乎我已经降级使用了右边的方法.

这是我的代码

blurView.blendingMode = NSVisualEffectBlendingMode.behindWindow
blurView.material = NSVisualEffectMaterial.Medium
blurView.state = NSVisualEffectState.Active
self.window!.contentView!.addSubview(blurView)

可能,相关 – 但没有回答我的问题:

> OS X NSVisualEffect decrease blur radius? – 没有答案

然我不建议这样做,除非你准备回到它不能在将来的版本中工作,你可以使用以下内容将NSVisualEffectView子类化为你想做的事情:
- (void)updateLayer
{
    [super updateLayer];

    [CAtransaction begin];
    [CAtransaction setDisableActions:YES];

    CALayer *BACkdropLayer = self.layer.sublayers.firstObject;

    if ([BACkdropLayer.name hasPrefix:@"kCUIVariantMac"]) {
        for (CALayer *activeLayer in BACkdropLayer.sublayers) {
            if ([activeLayer.name isEqualToString:@"Active"]) {
                for (CALayer *sublayer in activeLayer.sublayers) {
                    if ([sublayer.name isEqualToString:@"BACkdrop"]) {
                        for (id filter in sublayer.filters) {
                            if ([filter respondsToSELEctor:@SELEctor(Name)] && [[filter name] isEqualToString:@"blur"]) {
                                if ([filter respondsToSELEctor:@SELEctor(SETVALue:forKey:)]) {
                                    [filter SETVALue:@5 forKey:@"inpuTradius"];
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    [CAtransaction commit];
}

然这本身不使用私有API,但它确实开始深入挖掘您不拥有的层次结构,因此请务必仔细检查您所获得的内容是否符合预期,如果没有,则优先失败.例如,在10.10优胜美地,背景层是视觉效果视图的直接后果,因此未来可能会发生变化.

大佬总结

以上是大佬教程为你收集整理的swift – 调整NSVisualEffectView模糊半径和透明度全部内容,希望文章能够帮你解决swift – 调整NSVisualEffectView模糊半径和透明度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。