如何制作带圆角的窗户

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/…

以上是关于如何制作带圆角的窗户的主要内容,如果未能解决你的问题,请参考以下文章

如何在c#中制作带圆角的文本框?

WPF制作带圆角的文本框的两种方法

java在线聊天项目 使用SWT快速制作登录窗口,可视化窗口Design 更换窗口默认皮肤(切换Swing自带的几种皮肤如矩形带圆角)

WPF如何制作圆角Datepicker

如何制作左上圆角和左下圆角的形状?

如何以编程方式在 UIview 中制作圆角和边?