问题标签 [nswindow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
12983 浏览

cocoa - 获取 nswindow 的大小

有什么方法可以获取 NSWindow 的大小(以像素为单位)并显示它?因此,当该人调整窗口大小时,文本将更改并显示新大小。

0 投票
1 回答
770 浏览

objective-c - 调整 NSPanel 的大小以适应动态 NSMatrix 和按钮

我有一个用一些表单项动态填充的 NSMatrix。现在,我可以方便地调用 [theMatrix sizeToCells] 并将其传递到要显示的面板中。

现在,我希望包含此 NSMatrix 的 NSPanel 对象调整大小以很好地环绕它。NSPanel 底部还有一个按钮,应该在 NSMatrix 下方。

我一直在尝试很多事情来获得界限和设置框架并且一直很困惑。

是否有任何标准或正确的方式来调整面板的大小?

作为一个附带问题:框架的原点是指它的左上角还是左下角?它总是一致的吗?

谢谢

0 投票
2 回答
7817 浏览

objective-c - 隐藏和显示 HUD 窗口 - Cocoa?

我有一个 HUD 窗口,上面有一些标签,我希望它在用户按下按钮时显示。我知道这很简单,但除非我重新启动程序,否则我无法让它再次显示。

真挚地,

凯文

0 投票
1 回答
698 浏览

objective-c - 如何让 OS X 设置 NSWindow 的初始位置

如何让 OS X 将 NSWindows 放置在合理的默认平铺位置?就像当我打开 TextEdit 并创建 10 个文档时,我看到所有窗口都具有相同的大小,但是有人足够聪明,可以将它们彼此偏移一点。我确定该应用程序本身并没有在代码中执行此操作。

(我需要一个基于代码的,而不是 NIB/XIB 解决方案)。

0 投票
3 回答
6878 浏览

objective-c - 如何将 NSPanel 显示为工作表

我正在尝试将 NSPanel 显示为工作表。我天真地按照这些思路做一些事情:

出于某种我无法理解的原因,这不起作用。当调用这部分代码时,工作表会瞬间闪烁(因为autorelease消息)。床单永远不会挂在窗户上。

如果有人能指出我在哪里可以找到更多信息,那将不胜感激。

0 投票
2 回答
5461 浏览

objective-c - setOpaque:NO vs setBackgroundColor:[NSColor clearColor]

我正在阅读关于通过子类化 NSWindow 用可可绘制自定义 [形状] 窗口的教程。

本教程指出,在初始化程序中,开发人员应该执行以下操作:

所以我想知道这两条消息之间有什么区别,为什么它们都需要因为它们的结果是相同的。

参考:教程可以在这里找到

0 投票
3 回答
1553 浏览

objective-c - 调暗 NSWindow 并在顶部层 NSView

有什么办法可以使我的 NSWindow 变暗(基本上在它上面放一个黑色透明层,你不能点击),然后在上面分层一个自定义的 NSView ?

0 投票
6 回答
5887 浏览

objective-c - 如何使用非矩形按钮创建透明窗口?

我正在寻找一个看起来像这样的自定义窗口(不要介意快速 Photoshop):

替代文字

我遇到的主要问题不是使窗口透明(尽管我想欢迎任何信息!),但我希望能够仅单击按钮的可见部分。例如,如果我在“5”按钮的左上角之外单击,我希望它记录对“1”按钮而不是“5”按钮的单击,即使我单击了按钮 5 的边界框。如果我点击“1”按钮的左上角“角落”之外,我希望它点击窗口下方的任何内容,而不是按钮。我还需要能够调整此窗口的大小,并且按钮中的图片应与它们一起调整大小。

我正在考虑使用带有透明 NSButton 的透明 NSWindow,其中每个按钮包含带有 alpha 的 PNG,但我认为重叠的按钮将是一个问题。

我还听说过诸如 Bowtie、SweetFM 和其他使用 WebKit 来显示其界面的应用程序。如果这在至少 10.3 上是可能的,那会很有趣,但我也不知道它是如何工作的。

我四处寻找点击蒙版、区域或类似的东西,但我还没有找到任何东西。当我找到更多信息时,我会更新这篇文章(如果我这样做了!)。

关于如何进行的任何提示?

(请注意,我正在使用 10.4,理想情况下我也需要支持一些旧版本的 Mac OS X。)

(另外,我在 Apple 的开发网站上找到了“圆形窗口”示例,但它不再在 10.4 上运行,所以我不确定这是要走的路。)

提前致谢!

更新:

(见更新2,此问题现已修复)

好的,现在我遇到了一个稍微不同(但并非不相关)的问题。到目前为止我所做的是:

我选择制作一个可以用于每个按钮的自定义控件:

1- 继承 NSControl 并覆盖 drawRect、mouseUp、mouseDragged 和 mouseDown。这样我可以在拖动按钮(移动窗口)时获得我想要的行为。

2-将每个按钮状态的图像(相同的形状,但一个变暗)加载到 NSImages 中,并在必要时将它们绘制到视图中compositeToPoint:fromRect:operation:。这些图像是185 x 185像素的PNG 文件,带有从 Photoshop 导出的 Alpha。

3- 获取 NSImage 的位图表示:

或者

两者似乎都给出了相同的结果。我尝试将此位图表示合成到我的窗口上,以查看图像是否具有相同的大小并看起来与原始图像是否相同,并且一切看起来都很好(您将在此枚举之后明白我为什么这样做......)。

4- 在鼠标事件方法中,我使用位图表示来获取特定点的 alpha 分量:

然后我将 alpha 值打印到控制台,但我得到了非常奇怪的结果。乍一看,获取 alpha 分量和鼠标下的颜色似乎有效(返回的颜色和 alpha 在我的位图中),但看起来颜色不是在 中的正确点bitRep,或者包含在中的图像bitRep是失真(不过,当我在窗口上合成时它不会失真bitRep,这很奇怪)。我再次仔细检查了 x 和 y 鼠标坐标是否在 (0,185) 范围内,并且大小NSBitmapImageRep也是 185 x 185。

NSBitmapImageRep首先,与 my 相比,它看起来是水平翻转的NSImage。如果我翻转我的坐标,返回的值似乎大部分都可以(大部分形状似乎与返回的值相符),但仍有部分图像返回错误的值。

在这一点上我一无所知,以前从未使用过,NSBitmapImageRep也许我只是忘了指定一些关于我的图像的格式信息,这就是这些值关闭的原因。有人可以澄清一下吗?

再次感谢!

更新 2:

好吧,没关系,我发现了问题。我使用 setColor:atX:y: 方法在 bitRep 上绘制一个彩色点,然后在我的窗口上打印它,问题很清楚:bitRep 中的 Y 坐标是反转的,但图像打印为“好“ 方向。这意味着 bitRep 具有“Windows 样式”的左上角原点坐标系,而窗口具有笛卡尔坐标系(左下角)原点。只需反转我的 Y 坐标即可解决我获得 alpha 分量和颜色的问题。

这一定是在文档的某个地方写的,很抱歉因为我缺乏研究而打扰你......!

0 投票
3 回答
6620 浏览

cocoa - 为什么我必须在 10.5 上调用我的 NSWindowController 上的 showWindow 两次?

我有一个 NSWindowController 的子类,我用它从笔尖加载一个窗口并将其显示在屏幕上。下面是我想显示窗口时调用的代码。在 10.6 上调用 showCustomWindow 时会显示窗口,但在 10.5 上必须调用此方法两次才能显示窗口。

该窗口已选中“启动时可见”,取消选中它似乎没有任何区别。

编辑:我意识到我遇到的问题与我的 NSWindowController 或 showWindow 无关。我已经正确设置了。然而,我确实发现并非所有类都实现了 awakeFromNib。在我的一个 NSView 子类中(在我试图加载的 nib 中),我正在调用 [super awakeFromNib] 这给了我一个“不响应选择器”(但仅在 10.5 上,这很奇怪)。所以,我本可以取出 [super awakeFromNib] 但我选择了希望更强大的:

这使我的笔尖可以正常加载,并且 showWindow 可以正常工作。

0 投票
2 回答
2131 浏览

objective-c - MAAttachedWindow 的淡入/淡出

我使用 Matt Gemmell 的 MAAttachedWindow ( http://mattgemmell.com/source ) 和 NSStatusItem 在菜单栏中显示自定义视图。我很困惑如何让它淡入淡出。通常我会做这样的事情:

并淡出:

但是,此代码似乎对 MAAttachedWindow 无效。有任何想法吗?

谢谢