NSScrollView放大内容

时间:2014-01-03 14:20:17

标签: macos cocoa nsscrollview

我试图弄清楚NSScrollView的内容放大率是如何工作的:

我有一个NSScrollView,我试图添加一个包含NSTextField的NSView。

我使用文本字段创建NSView并将其添加到NSScrollView文档视图(scrollView.documentView addSubview:...),因此我最终得到以下内容:

NSScrollView.documentView - > NSView - >的NSTextField

当NSScrollView上的放大率发生变化时,NSView会自动调整大小,并且NSTextField的边界/单击区域也会调整大小,但实际的NSTextField不会调整大小:(那些红色轮廓是如果我将鼠标悬停在/我必须单击以开始编辑的位置,光标将会改变,所以这实际上是以某种方式正确缩放)

normal size zoomed in, mouse over / start edit bounds in red even more zoomed in, again the actual bounds are somehow scaling so I have to click within those red dots to start editing

如果我跳过NSView,并将NSTextField直接添加到NSSCrollView.documentView,我会得到类似的"效果"实际文本/文本字段将缩放的位置,而不是焦点环:

now the textfield is ok, but the focus ring does not scale

它看起来像是直接"下面" NSScrollView.documentView将正确扩展,但不是它的子视图?

我尝试设置autoresizing mask和autoresizessubviews-> TRUE无处不在但无济于事......

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

我不认为你做错了什么,它只是打破了。遗憾的是,大多数小工具都不会以理智的方式上下扩展。它们是非常古老的类,并且有大量的黑客攻击,并且最近刚刚(重新)添加了缩放。

如果您正在实现自己的视图,则缩放很棒,但对于窗口小部件不会非常有用。 (我甚至不知道他们是否对所有小部件都有完全可扩展的艺术。)