問題タブ [nsvisualeffectview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - OSX < 10.10 と下位互換性のある NSVisualEffectView を使用するには?
間もなく登場する OSX 10.10 ("Yosemite") は、新しいタイプのビューである NSVisualEffectView を提供します。これは、窓越しまたは窓内の半透明性をサポートします。私は主に窓越しの半透明性に関心があるので、この質問ではそれに焦点を当てますが、窓内の半透明性にも当てはまります。
10.10 で透過的な透過性を使用するのは簡単です。NSVisualEffectView
ビュー階層のどこかに を配置し、 に設定するだけblendingMode
ですNSVisualEffectBlendingModeBehindWindow
。それだけです。
10.10 では、IB で を定義NSVisualEffectView
し、それらのブレンド モード プロパティを設定するだけで、すぐに実行できます。
ただし、以前の OSX バージョンとの下位互換性を維持したい場合は、それができません。XIB に を含めようNSVisualEffectView
とすると、XIB をロードしようとするとすぐにクラッシュします。
10.10 で実行すると透過性を提供し、以前の OS バージョンで実行すると不透明なビューに単純に劣化する「設定して忘れる」ソリューションが必要です。
これまでに行ったことは、問題のビューを XIB の通常の NSView にしてから、(awakeFromNib によって呼び出される) をチェックするコードを追加することです[NSVisualEffectView class] != nil
。クラスが定義されたら、NSVisualEffectView のインスタンスを作成します。現在のビューのすべてのサブビューを新しいビューに移動し、所定の位置にインストールします。これは機能しますが、半透明のビューが必要になるたびに記述しなければならないカスタム コードです。
NSProxy オブジェクトを使用すると、これが可能になる可能性があると考えています。これが私が考えていることです:
NSView のカスタム サブクラスを定義します (MyTranslucentView と呼びましょう)。すべての init メソッド (initWithFrame および initWithCoder) で、新しく作成されたオブジェクトを破棄し、代わりにプライベート インスタンス変数 (myActualView) を持つ NSProxy のサブクラスを作成します。初期化時に、OS>=10.10 の場合は myActualView オブジェクトを NSVisualEffectView として作成し、OS<10.10 では通常の NSView を作成することを決定します。
プロキシは、すべてのメッセージを myActualView に転送します。
これはかなりの面倒で低レベルのコードですが、うまくいくはずです。
誰かがこのようなことをしましたか?もしそうなら、あなたは私を正しい方向に向けるか、私に何か指針を与えることができますか?
Apple はYosemiteとの Beta 契約で、以前の Beta 契約よりもはるかにオープンです。これについて一般的な用語で話すことで、ベータNDAに違反しているとは思いませんが、実際に使用するコードNSVisualEffectView
はおそらくNDAの下で共有する必要があります...
objective-c - 10.10 TitleBar を通過するソース リスト?
この種のカスタム列のアプリ ビューを実現する方法に興味があります。ソースリストはタイトルバーを直接通過しますが、片側だけで、おそらくタイトルバーを隠してからNSVisualEffectViewを使用したと思いますか? ソース コードやヒントを歓迎します。非常にクールで、Yosemite アプリの UI 要素がかなり広く使用されていることがわかります。
この写真の検索バーと [リストの追加] ボタンは明らかに異なるビューにあり、SourceList スタイルの NSOutlineView が 10.10 でこの種の効果を自動的に作成することは完全に理解していますが、ボタンと検索フィールドをソースに配置することはできません。リストのスクロール領域ですが、その背景はソース リストの背景と一致しているため、この効果はソース リスト ベースよりもビュー ベースであると思われます。
objective-c - NSVisualEffectView を使用して、滑らかで丸みを帯びたボリュームのような OS X ウィンドウを作成する方法は?
現在、Volume OS X ウィンドウのようなウィンドウを作成しようとしています。
これを作成するために、独自のNSWindow
(カスタム サブクラスを使用して) 透明/タイトルバーなし/シャドウなしで、NSVisualEffectView
内部に contentView を持っています。コンテンツ ビューを丸くするサブクラスのコードは次のとおりです。
そして、これが結果です(ご覧のとおり、角は粗く、OS Xの方がはるかに滑らかです):
角をより滑らかにする方法についてのアイデアはありますか?ありがとう
macos - OS X 10.10 でダーク ビブランシーの外観を使用するためにソース リストの選択ハイライトを取得するにはどうすればよいですか?
OS X 10.10 では、ソース リストは明るい鮮やかな外観を使用しているようです。Finder (およびその他のサード パーティ アプリケーション、Things.app など) では、ソース リストで選択された項目は暗い鮮やかな外観で示されます。たとえば、下の画像のデスクトップ行を参照してください。
この動作を再現するにはどうすればよいですか? テーブル行ビューを指定するためにデリゲート メソッドを使用する必要がありますか?
自分でカスタム描画を試みますか、それとももっと簡単なアプローチがありますか? Xcode で標準のソース リスト UI を作成した場合、デフォルトの強調表示は、以前のバージョンの OS X で見られた標準の青い四角形のままです。
objective-c - Yosemite の半透明/ぼやけた背景の鮮やかさの量を制御することは可能ですか?
NSVisualEffectView
クラスを使用してObjective-Cアプリに実装できる、最近Yosemiteによって導入された、いわゆるバイブランシー効果で半透明の量を制御できるかどうかを知りたい.
より具体的な例を次に示します。音量レベルが変更されたときに Yosemite OS X によって表示される半透明効果を考えてみましょう。
鮮やかさは、単純なものを使用して得られるものよりもはるかに強力ですNSVisualEffectView
(次の画像を参照)。
2 つの画像を比較すると (スピーカーの形状の違いは無視して背景に注目してください)、Yosemite OS X のボリューム ウィンドウでは、鮮やかさ (ガウスぼかし効果の強さ) がはるかに強いことがわかります。を使用した私のアプリNSVisualEffectView
。どうすればそれを手に入れることができますか?
cocoa - wantLayer エイリアシングの問題がある NSVisualEffectView の上にある NSTextField
サブピクセルがサポートされていないため、Core Animationレイヤー(CALayer)を使用する場合、NSTextFieldの背後に無地の背景色が必要であることは承知していますが、NSVisualEffectView
背後にあるを使用する必要がありNSOutlineView
、上にいくつかのNSTextFieldを使用しています。wantsLayer
を YESに設定するとNSOutlineView
、悲しいことに、上部のテキストのエイリアスが不十分になります。素敵なぼかしと滑らかなテキストを上に表示するにはどうすればよいですか? これは、スーパービューとして使用するCALayer
場合、まったく使用できないということですか?NSVisualEffectView
macos - IKImageBrowserView のスーパークラスを NSVisualEffectView に置き換えます
IKImageBrowserView の背景にぼやけた背景を持たせたいと考えています。Apple Documentationによると、IKImageBrowserView は NSView に基づいています。代わりに IKImageBrowserView を NSVisualEffectView から継承して、背景にぼやけた外観を与えることは可能ですか? まず、IKImageView をサブクラス化する必要があると思いますが、次に何をすればよいかわかりません。誰かが私を正しい方向に向けてもらえますか?
ありがとう