问题标签 [nsview]

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 投票
2 回答
14695 浏览

cocoa - addSubview 和自动调整大小

如何将视图添加到窗口,以便调整视图大小以适应窗口框架?

问题

我正在制作一个包含 2 个视图的工作表窗口,其中一次只有一个可见,因此视图与窗口的大小相同很重要。我的问题是 view0 适合,而 view1 不适合,反之亦然。我不知道如何给它们与窗口相同的大小。

可能的解决方案

我可以确保两个视图在 Interface Builder 中具有完全相同的大小,然后它就可以工作了。但是我正在寻找一种以编程方式执行此操作的方法。


视图0截图

您可以在下面看到顶部和右侧的自动调整大小问题,其中视图以某种方式被剪裁。

视图0
(来源:flickr.com


视图1的屏幕截图

此视图已正确调整大小。

视图1
(来源:flickr.com


这是我的代码

可以在将视图添加到窗口之前调整它们的大小吗?还是像我现在所做的那样,在更改窗口框架的同时逐一添加视图会更好。你怎么做呢?

0 投票
3 回答
4657 浏览

objective-c - 在 NSView 中制作网格

我目前有一个NSView绘制网格图案(基本上是水平和垂直线的指南)的想法是用户可以更改网格的间距和网格的颜色。

网格的目的是在排列对象时充当用户的指南。除了一个例外,一切都很好。当我NSWindow通过拖动调整大小手柄调整大小时,如果我的网格间距特别小(比如 10 像素)。拖动调整大小本质上变得昏昏欲睡。

drawRect的网格代码如下:

我怀疑这完全与我绘制网格的方式有关,并且我愿意接受有关如何更好地处理它的建议。

我可以看到效率低下的地方,拖动调整大小在调整大小时NSWindow不断调用drawRect此视图中的 ,并且网格越接近,父窗口的每个像素拖动的计算越多。

我正在考虑在调整窗口大小时隐藏视图,但感觉不那么动态。我希望用户体验非常流畅,没有任何明显的延迟或闪烁。

有没有人对绘制网格的更好或更有效的方法有任何想法?

一如既往,非常感谢所有帮助。

0 投票
2 回答
1693 浏览

cocoa - 打印 CALayers

我有一个包含许多 CALayers 的 NSView。当用户编辑文档时,这些 CALayers 会为所有编辑设置动画。我正在尝试为我的应用程序实现打印,但我在正确打印这些 CALayers 时遇到了一些问题。

有些 CALayers 的边界占据了整个 NSView,不需要布局,因为它们的位置永远不会改变。但是,我也有一个包含大约 20 个小 CALayer 的 CALayer。这些 CALayer 会在正常编辑期间对其位置变化进行动画处理。但是,当尝试打印 NSView 时,这些小的 CALayer 永远不会正确布局。我想知道是否需要做一些特别的事情来确保这些图层的位置正确,并允许正确绘制/打印 NSView。

有没有人有打印核心动画支持的 NSView 的经验?任何建议表示赞赏。

0 投票
1 回答
739 浏览

macos - 从 CGPath 创建 NSView

我有一个 CGPath,我想将它绘制一次到 NSView。似乎相对简单,但我还没有在 AppKit(非 iphone)中找到方法。

0 投票
1 回答
947 浏览

cocoa - 将 NSWindow 显示为 NSView 的子视图

我有一个 NSWindow 我想显示为另一个窗口的一部分。它必须是一个 NSWindow;我不想将其更改为 NSView 或任何东西......我只是不想,因为它涉及访问外国 nib 文件等。

如果可能的话,我应该如何做到这一点?我正在考虑抓住 NSWindow 的视图并将其作为主窗口中另一个视图的子视图......但我认为这是不可能的。是吗?

0 投票
2 回答
229 浏览

cocoa - NSView 中 NSString 的奇怪行为

尝试创建一个 Skat-Game,我遇到了以下问题:

isBidding 是一个布尔值指示g,程序处于某种状态,[desk selected] 是一个调用返回当前选定玩家的方法,chatStrings 由字典组成,与玩家一起保存字符串,谁输入了,他输入了什么

这是确定字符串内容的部分,字符串由 [event characters] 方法提供。

如果有问题是这样的:

当输入两个以上的字母时,视图显示 NSRectSet{{{471, 574},{500, 192}}} 并且当我尝试打印时不再返回任何描述。

然后我收到一条 EXC_BAD_ACCESS 消息,虽然我还没有释放它(据我所知)我还用 alloc 和 init 创建了字符串,所以我不能在自动释放池中。当它随着调试器发生变化时,我也尝试观察该过程,但我找不到任何负责任的代码。

正如你所看到的,我仍然是 Cocoa 的初学者(和一般的编程),所以如果有人能帮助我,我会非常高兴。

0 投票
1 回答
1355 浏览

objective-c - Layering Cocoa WebView - Drawing on top?

webview in core animation layer

The only other thread I can find is the above which doesn't necessarily fit my needs. Is there a reliable way to simply draw a view on top of a webview? I've tried to layer a regular NSView on top of WebView, and it draws right at first, but any movement in the webview (scrolling the page etc) appears to invalidate the view and produces visual artifacts.

I've tried:

No luck there, same problems -- z-ordering doesn't seem to work unless I'm missing something.

Is this just a limitation of webviews?

I also tried implementing the view above as a window, which worked much better (just controlled the location of the window programmatically). However, the desired behavior is for the user to enter some text into this window, but for it not to steal "focus" -- ie the main window goes inactive (the x - + go gray) when the user clicks on the text field in the new window. Any way to avoid that?

I've tried subclassing NSWindow and overriding canBecomeKey (return YES) and canBecomeMain (return NO) but the window still steals focus.

EDIT: I weep :-( I can't figure out a way around the drawing over webkit thing. I did, on the other hand, figure out a way to force the main window of my app to retain active state even though you have a popup window with key state. However, it has unintended consequences when using the text input on the popup dialog (which has to be forced into the key window state). Backspace doesn't work :: shakes head ::, and mouse events are not getting distributed to the webkit views below (for mouseovers on components embedded in the html). Craptacular.

Josh

0 投票
7 回答
25788 浏览

cocoa - How do I make an NSView move to the front of all NSViews

I have a super view, which has 2 subviews. These subviews are overlapped.

Whenever i choose a view from a menu, corresponding view should become the front view and handle actions. i.e., it should be the front most subview.

acceptsFirstResponder resigns all work fine. But the mouse down events are sent to the topmost sub view which was set.

Regards, Dhana

0 投票
3 回答
1875 浏览

objective-c - NSMenuItem 的视图(NSView 子类的实例)在悬停时未突出显示

我需要使用自定义NSView子类来绘制一些内容,但是当用户悬停时它不会像突出显示的那样绘制,并且NSMenu当用户单击它时它不会关闭。有任何想法吗?

编辑

所以使用-drawRect:并且[[self enclosingMenuItem] isHighlighted]我能够判断我是否需要将视图绘制为突出显示并且有机会这样做。我所要弄清楚的是如何做到这一点。

0 投票
3 回答
2628 浏览

cocoa - Cocoa:如何使用可编辑的文本区域实现自定义 NSView?

制作具有可编辑文本区域的自定义 NSView 所需的最低实现是什么?我假设 NSTextFieldCell 可以用于此。我已经成功地在视图中绘制了单元格(这很简单),但是使其可编辑似乎需要在视图和单元格之间进行更复杂的协调。在某处有可用的示例代码吗?

更新。我应该明确表示我的长期目标是在同一个视图上拥有更多可编辑的文本区域。AFAIU 在这种情况下最好使用单元格,因为它们比完整的视图更轻量级。我更新的问题是:使用适当的 NSCell 制作具有可编辑文本区域的自定义 NSView 所需的最低实现是什么?