3

我创建了一个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
    }

我在情节提要中添加了一些按钮。当我运行该项目时,我看不到任何按钮。

在此处输入图像描述

当我从applicationDidFinishLaunching(_ aNotification: Notification)NSVisualEffectView代码中删除所有内容时,我可以看到按钮。

在此处输入图像描述

谁能告诉我发生了什么?

4

2 回答 2

2

我想我应该只在你之前的问题中纠正你,但我没有。

您正在使用 Storyboard,那么为什么要NSVisualViewEffect在代码中创建变量?

nsvisualeffectview在右侧面板(实用程序面板)中搜索按钮等(对象库)。

在此处输入图像描述

根据您的主视图控制器拖动它并调整它的大小。

要添加模糊效果和模式,请转到“实用程序面板”中的“属性检查器”

在此处输入图像描述

并设置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
}

现在您可以添加按钮、文本字段并运行项目。您可以看到所有添加的元素。

我希望它有帮助!

于 2017-03-14T03:54:55.603 回答
-1

window位于要添加按钮的视图上方,因此按钮位于模糊窗口下方,因此无法看到。为什么不将其添加visualEffectView到与按钮相同的视图中?您需要将其插入按钮下方以使按钮可见。

于 2017-03-14T00:08:36.067 回答