【发布时间】:2012-06-08 16:27:26
【问题描述】:
我已经阅读了很多关于动态调整 NSWindows 大小的问题的答案,但还没有什么效果。
我已经构建了一个类似“弹出框”的窗口以从菜单栏显示,我不能使用 NSPopover,因为它在设计方面不够可定制。我的视图层次结构当前如下所示:
NSWindow Subclass
- NSView (clears the titlebar rendering, draws popover arrow)
- NSView (contentView)
- NSOutlineView (main table of content)
- NSView (window footer)
我需要的是窗口随着 NSOutlineView 中的项目的扩展和收缩而扩展和收缩,以便窗口始终是大纲视图、页脚和顶部弹出箭头的正确高度。
我有一些方法可以根据内容计算大纲视图所需的高度。到目前为止,我一直在尝试重新计算在内容视图控制器上调用 awakeFromNib 时的大小,然后在委托方法 outlineViewItemDidCollapse: 和 outlineViewItemDidExpand: 上再次计算大小,但我永远无法正确调整窗口大小。
我尝试了很多不同的方法,但都没有奏效。有没有“规范”的方法来做到这一点?我看到人们谈论 -[NSWindow frameForContentRect:] 与这类问题有关,但我不太明白这是怎么回事。
也许我的做法完全错误,但我希望不会。看起来这应该是可能的,它只是在正确的地方得到正确的东西。不幸的是,GUI 编程对我来说不是一个强项。我将不胜感激人们提出的任何想法或解决方案。
谢谢。
编辑:这已解决,部分原因是标记的答案,部分原因是其他一些原因。清除 NSView 没有自动调整大小的掩码,所以我将其设置为向各个方向扩展,这有助于解决一些调整大小的问题。此外,我用于计算所需高度的方法并不完全正确,并且存在一些问题。
根据提供的答案,在某些情况下找到所需高度的方法很好,但我没有可以测量的“根”项目。这可能需要考虑。
【问题讨论】:
标签: macos cocoa nsview nswindow appkit