2017-03-13 60 views
1

我創建使用NSVisualEffectView得到模糊和圓角的窗口中添加按鈕。像here如何當NSVisualEffectView使用

問題是我沒有在窗口中看到我的按鈕,當我有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 
    } 

我在故事板上增加了一些按鈕。當我運行該項目時,我看不到任何按鈕。

enter image description here

當我從applicationDidFinishLaunching(_ aNotification: Notification)即除去一切,NSVisualEffectView代碼,我可以看到的按鈕。

enter image description here

誰能告訴我發生了什麼?

回答

2

我想我應該糾正你的只有你的previous question,但我沒有。

您正在使用Storyboard,那麼爲什麼在代碼中創建NSVisualViewEffect變量?

在右側面板(實用程序面板)中搜索nsvisualeffectview,您可以在其中搜索按鈕等(對象庫)。

enter image description here

拖動它,並根據您的主視圖控制器調整其大小。

要添加模糊效果和模式,進入 「Attribites督察」 中的 「工具面板」

enter image description here

,並設置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

你真的不應該把東西添加到'window'中,而且我甚至不知道在故事板中可以做到這一點。你真的應該將visualEffectView和所有按鈕添加到一個'UIView',而標準的位置是'UIViewController'的'view'屬性。至於設置「z-index」,可可中的視圖的所有子視圖都有一個索引。所以你可以說'self.view.insertSubview(button,at:0)'把一些東西放在一堆子視圖的最下面。 – creeperspeak

+0

我曾嘗試將效果應用於'NSViewController'而不是'window'。我仍然看不到按鈕。你能告訴我該怎麼做嗎?我是新的mac開發,我無法通過 – ssh