Snow Leopard vs. Lion中的NSScrollView行为(NSScroller透明度)

时间:2011-08-02 09:36:01

标签: osx-snow-leopard nsscrollview osx-lion

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以查看[NSScroller类]的preferredScrollerStyle,如果它不是零(实际上是NSScrollerStyleLegacy,但您没有在SDK 10.6中使用它),那么请按照上面的说明增加您的视图。另外,不要忘记检查您的scroller类是否响应该选择器(并使用performSelector :)调用它,因为它仅在SDK 10.7中添加。 或者,您可以使用NSScroller的自定义后代重载isCompatibleWithOverlayScrollers以返回false。你甚至可以在Lion上拥有宽度为15pt的传统卷轴。