Adjust NSVisualEffectView blur radius and transparency

前端 未结 2 1679
隐瞒了意图╮
隐瞒了意图╮ 2021-01-03 00:20

Is it possible to adjust the blur radius and transparency of an NSVisualEffectView when it\'s applied to an NSWindow (Swift or Objective-C)? I trie

2条回答
  •  失恋的感觉
    2021-01-03 00:55

    I had the same issue as you had and I have solved it with a little trick seems to do the job that I wanted. I hope that it will also help you.

    So in my case, I have added the NSVisualEffectView in storyboards and set its properties as follows:

    and my View hierarchy is as follows:

    All that reduces the blur is in the NSViewController in:

    override func viewWillAppear() {
        super.viewWillAppear()
        //Adds transparency to the app
        view.window?.isOpaque = false
        view.window?.alphaValue = 0.98 //tweak the alphaValue for your desired effect
    }
    

    Going with your example this code should work in addition with the tweak above:

        let blurView = NSVisualEffectView(frame: view.bounds)
        blurView.blendingMode = .behindWindow
        blurView.material = .fullScreenUI
        blurView.state = .active
        view.window?.contentView?.addSubview(blurView)
    

    Swift 5 code For anyone interested here is a link to my repo where I have created a small prank app which uses the code above: GitHub link

提交回复
热议问题