我已经创建了一个窗口使用NSVisualEffectView获取模糊和圆角。就像here
问题是,当我有NSVisualEffectView代码时,我看不到窗口中的按钮。如果我删除了代码,就会显示按钮。出什么问题了?
NSVisualEffectView代码( AppDelegate.swift: )
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代码--时,我可以看到按钮。

有人能告诉我发生了什么吗?
发布于 2017-03-14 03:54:55
我想我应该在你的previous question里纠正你,但我没有。
您正在使用Storyboard,那么为什么要在代码中创建NSVisualViewEffect变量呢?
在右侧面板(实用程序面板)中搜索nsvisualeffectview,在其中搜索按钮等(对象库)。

拖动它并根据主视图控制器调整大小。
若要添加模糊效果和模式,请转到“实用程序面板”中的"Attribites检查器“。

并设置window.backgroundColor = .clear和window.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-14 00:08:36
window位于您要添加按钮的视图之上,因此这些按钮位于模糊窗口之下,因此无法看到。为什么不将visualEffectView添加到与按钮相同的视图中呢?您需要将其插入按钮下面,以使按钮可见。
https://stackoverflow.com/questions/42774922
复制相似问题