如何制作带圆角的窗户
Posted
技术标签:
【中文标题】如何制作带圆角的窗户【英文标题】:How to make a window with rounded corners 【发布时间】:2019-11-19 18:03:26 【问题描述】:我可以找到一个很好的解决方案来制作带圆角的窗户
https://github.com/lukakerr/NSWindowStyles Section: 6. 有边界半径且没有标题栏的充满活力的背景
let visualEffect = NSVisualEffectView()
visualEffect.translatesAutoresizingMaskIntoConstraints = false
visualEffect.material = .dark
visualEffect.state = .active
visualEffect.wantsLayer = true
visualEffect.layer?.cornerRadius = 16.0
window?.titleVisibility = .hidden
window?.styleMask.remove(.titled)
window?.backgroundColor = .clear
window?.isMovableByWindowBackground = true
window?.contentView?.addSubview(visualEffect)
guard let constraints = window?.contentView else
return
visualEffect.leadingAnchor.constraint(equalTo: constraints.leadingAnchor).isActive = true
visualEffect.trailingAnchor.constraint(equalTo: constraints.trailingAnchor).isActive = true
visualEffect.topAnchor.constraint(equalTo: constraints.topAnchor).isActive = true
visualEffect.bottomAnchor.constraint(equalTo: constraints.bottomAnchor).isActive = true
我发现它只有在我将其延迟放入 viewWillAppear 或 viewDidLoad 时才有效。无论如何,当我得到边界半径和充满活力的背景时,我看不到窗口中的任何内容,例如,带有文本测试的简单标签。 (我试图将该文本放在故事板上或通过代码)
@IBOutlet weak var label1: NSTextField!
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0)
self.label1.stringValue = "test text"
如何使用此代码使标签可见?
(或者作为第二种选择,如何制作一个有圆角、没有条形、背景半透明或充满活力的窗口以及顶部或内部不透明的标签?)
(我知道如何使标题栏透明并删除按钮和标题。但这不是我需要的好解决方案,因为栏仍然存在并创建了一个产生问题的空间)
【问题讨论】:
你能不能不把内容向上翻,这样标题栏占据的“空间”就消失了? @JulianSilvestri 我已经尝试过了,如果我能用标签解决问题,我在这里解释的解决方案会好得多 【参考方案1】:标签的问题是您在其上方添加了NSVisualEffectView
。您可以尝试在下面添加它:
view.addSubview(visualEffect, positioned: .below, relativeTo: label1)
但要小心你只添加一次:viewWillAppear
可以被多次调用。
【讨论】:
您的解决方案很棒。谢谢你。我也尝试对没有圆角的窗户做同样的事情。在这种情况下,您的解决方案不起作用。也许我应该提出另一个问题? 当然,因为原始主题不适用。请显示您的所有代码,包括您是在视图控制器还是窗口控制器中工作。 我在这里问过:***.com/questions/59157325/…以上是关于如何制作带圆角的窗户的主要内容,如果未能解决你的问题,请参考以下文章
java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)