2016-05-14 27 views
5

NSVisualEffectViewのぼかし半径と透明度をNSWindow(SwiftまたはObjective-C)に適用して調整することは可能ですか? NSVisualEffectMaterial(ダーク、ミディアム、ライト)のすべてのバリエーションを試しましたが、それはカットしていません。下の画像では、Appleの非公開API(左はCGSSetWindowBackgroundBlurRadius、右はNSVisualEffectView)を使用しています。NSVisualEffectViewのぼかし半径と透明度を調整する

enter image description here

私は左側に何の外観を実現しようとしているが、私が右のメソッドを使用に追いやらだそうです。関連、

おそらく
blurView.blendingMode = NSVisualEffectBlendingMode.BehindWindow 
blurView.material = NSVisualEffectMaterial.Medium 
blurView.state = NSVisualEffectState.Active 
self.window!.contentView!.addSubview(blurView) 

- しかし、私の質問に答えていません:

は、ここに私のコードです

答えて

2

を私はこれをお勧めしませんが、将来のリリースで動作しない場合は、NSVisualEffectViewをサブクラス化して次のようにしてください。

​​

これは、それ自体がプライベートAPIを使用していませんが、それはあなたが所有していない層の階層に掘り始めるので、あなたが戻ってきていることは、あなたが期待するものであることをダブルチェックしてくださいんし、そうでなければ優雅に失敗する。たとえば、10.10のYosemiteでは、Backdropレイヤーは視覚効果ビューの直後のディレクターだったので、将来的に変化する可能性があります。

+0

こんにちは、お返事ありがとうございますが、残念ながら、これは透明度を調整していないようです。 –

+0

この例はウィンドウ内のぼかしのためのものです。そのため、必要な特定のレイヤーを取得するために、レイヤー階層を突き抜ける必要があります。 'updateLayer'にブレークポイントを設定し、' po self.layer.sublayers'を続けて呼び出すと、ビジュアルエフェクトビューで検索する必要があります。便利なのは、ほとんどのレイヤーに名前が付けられているので、少しずつドリルダウンすることができます。色合いをコントロールする「色合い」という別のレイヤーがあると思います。 –

関連する問題