1

我在 InterfaceBuilder (XCode 4) 中设置 NSScrollView 时遇到问题,因此它在 Snow Leopard 和 Lion 下看起来都不错。

我有四个 NSView,其中包含使用程序时需要访问的控件。我已经将视图放置在一个 NSScrollView 的视图中,当窗口变得太小而无法显示所有内容时,它应该显示一个垂直滚动条。(视图是一个自定义视图,它[customView isFlipped] == YES作为唯一的自定义返回。)

NSScrollView 设置为随着程序窗口的高度垂直自动调整大小。滚动视图内的自定义视图设置为与 NSScrollView 的宽度水平自动调整大小。NSScrollView 显示垂直滚动条并在显示完整内容时自动隐藏它。

使用这种配置,在 Snow Leopard 下一切正常。但是当我使用 Lion 时,垂直滚动条不会显示在自定义视图的顶部,而是显示在右侧的不透明灰色条内。当滚动条被隐藏时,这不会消失,要么是因为窗口足够大,要么是因为 Lion 在不使用时隐藏了滚动条。这看起来真的很不专业,因为我有一些元素跨越了自定义视图的整个宽度,现在从窗口边框停止 15 pts。当我将自定义视图的宽度设置为 NSScrollView 的宽度(一个 NSScroller 的宽度为 +15pt)时,我可以使它在 Lion 下正常运行,但是如果垂直滚动条是,则视图在 Snow Leopard 中水平滚动显示。有没有办法让它在两个系统中看起来都正确?

我正在使用 Snow Leopard 10.6 SDK 和 Leopard 10.5 作为最低操作系统进行编译。

4

1 回答 1

2

您可以检查您的 [NSScroller 类] 的preferredScrollerStyle,如果它不为零(实际上是 NSScrollerStyleLegacy,但您在 SDK 10.6 中没有它),然后如上所述增加您的视图。另外不要忘记检查您的滚动条类是否响应该选择器(并使用 performSelector 调用它:),因为它仅在 SDK 10.7 中添加。或者,您可以使用重载isCompatibleWithOverlayScrollers的 NSScroller 的自定义后代来返回 false。即使在 Lion 上,您也将拥有 15pt 宽度的传统滚动条。

于 2011-08-24T12:19:23.427 回答