【问题标题】:How to change resizing areas of a custom shaped NSWindow如何更改自定义形状的 NSWindow 的大小调整区域
【发布时间】:2019-12-04 20:53:44
【问题描述】:

在我的 macOS 应用程序中,我创建了一个自定义形状的窗口,其可见框架小于实际框架。我想让不可见的区域对用户交互无效。我玩过NSWindowframeRect(forContentRect contentRect: NSRect)和其他方法,跟踪它的contentView的区域但没有成功。有可能还是我只是在浪费时间?

【问题讨论】:

  • 不要使用部分透明的窗口来允许内容超出其范围,您可以尝试使用更普通的窗口并附加子窗口来处理越界内容。
  • @KenThomases 是的,这正是我在浪费了几个小时后所做的。谢谢。

标签: macos cocoa nswindow


【解决方案1】:

要做的主要事情

制作自定义窗口从透明窗口开始。 => 让 OSX 通过点击窗口的非透明区域

在您的窗口子类中,您必须覆盖 init 并将 opaque 设置为 NO

进一步阅读

我可以从旧的 bbut good cocoawithlove 教程中重申所有内容,但是,我将其链接起来: https://www.cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html

【讨论】:

  • 我已阅读本教程。窗户已经不透明了。这是子类设置代码titleVisibility = .hidden styleMask.insert(.fullSizeContentView) titlebarAppearsTransparent = true isOpaque = false backgroundColor = .clear let toolbar = NSToolbar() toolbar.showsBaselineSeparator = false self.toolbar = toolbar
  • @Akki – Daij-Djan 是正确的,如果窗口是非透明的,点击应该通过透明部分。然后,您可以捕捉任何点击并执行您想要的任何调整大小/拖动操作。如果您的窗口已经是非透明的,但透明部分的点击被捕获,您将需要编辑您的问题并添加您的代码以使人们能够帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2019-08-05
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多