2017-03-13 10 views
1

NSVisualEffectViewを使用してウィンドウを作成し、ぼかしと丸い角を得ました。 Like hereNSVisualEffectViewが使用されているときにボタンを追加する方法

NSVisualEffectViewコードを使用しているときに問題が発生しました。コードを削除すると、ボタンが表示されます。何がうまくいかないのですか? AppDelegate.swiftで

NSVisualEffectViewコード:

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     guard let window = NSApplication.shared().windows.first else { return } 
     let effect = NSVisualEffectView(frame: NSRect(x: 0, y: 0, width: 0, height: 0)) 
     effect.blendingMode = .behindWindow 
     effect.state = .active 
     effect.material = .dark 
     effect.wantsLayer = true 
     effect.layer?.cornerRadius = 15.0 
     effect.layer?.masksToBounds = true 
     window.isOpaque = false 
     window.backgroundColor = .clear 
     window.contentView = effect 
     window.titlebarAppearsTransparent = true 
     window.titleVisibility = .hidden 
    } 

私はストーリーボードにいくつかのボタンを追加しました。プロジェクトを実行すると、ボタンが表示されません。私は、applicationDidFinishLaunching(_ aNotification: Notification)すなわちからNSVisualEffectViewコードをすべてを削除すると、私はボタンを見ることができます

enter image description here

enter image description here

誰もが何が起こっているかを教えてもらえますか?

答えて

2

私はあなたのprevious questionであなたを修正したはずだと思いますが、私はしませんでした。

あなたはストーリーボードを使用していますので、コードにNSVisualViewEffect変数を作成するのはなぜですか?

右パネル(ユーティリティパネル)でボタンなど(オブジェクトライブラリ)を検索するnsvisualeffectviewを検索します。

enter image description here

ドラッグし、あなたのメインビューコントローラに応じてサイズを変更。今、あなたはあなたを追加することができ、ぼかし効果やモードを追加し、 "ユーティリティパネル"

enter image description here

に "Attribitesインスペクタ" に移動し、window.backgroundColor = .clearwindow.isOpaque = false

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     guard let window = NSApplication.shared.windows.first else { return } 
     window.isOpaque = false 
     window.backgroundColor = .clear 
} 

を設定するには

ボタン、テキストフィールドを開き、プロジェクトを実行します。追加された要素はすべて表示されます。

私はそれが助けてくれることを願っています!

+0

OMG!ありがとうございました。私は不穏に8時間捜していた!あなたは私を救いました。 – ssh

+0

@sshそれを聞いてうれしいです。 – SkrewEverything

-1

windowはボタンを追加するビューの上にあるため、ボタンはぼかしされたウィンドウの下にあり、したがって見えません。 visualEffectViewをボタンと同じビューに追加してみませんか?ボタンを表示させるには、ボタンの下に挿入する必要があります。

+0

どうすればいいですか?つまり、 'NSVisualEffectView'を' window'に適用し、 'window'の上にストーリーボードを介してボタンを追加しています。では、ボタンを前に持っていくにはどうすればいいですか?私はウェブデザインの経験があり、通常、要素を前後に配置するために 'z-index 'を使用しています。しかし、ココアでそれを行う方法は?私はココアが初めてです。ボタンの下にそのビューを挿入するにはどうしたらいいですか? – ssh

+0

あなたは本当に「ウィンドウ」に何かを追加してはいけません。そして、ストーリーボードでそれを行うことが可能であることはわかりませんでした。あなたは本当にvisualEffectViewとすべてのボタンを 'UIView'に追加しなければなりません。そのための標準的な場所は' UIViewController'の 'view'プロパティです。 "z-index"の設定に関しては、ココアのビューのすべてのサブビューにもインデックスがあります。したがって、 'self.view.insertSubview(button、at:0)'と言うと、サブビューのスタックのまさに「底」に何かを置くことができます。 – creeperspeak

+0

私は 'window'ではなく' NSViewController'にエフェクトを適用しようとしました。まだ私はボタンを見ることができません。あなたはそれを行う方法を教えてくださいできますか?私はマックの開発に新しいですし、私は – ssh

関連する問題