NSScrollView剪辑覆盖了UI元素

时间:2010-09-10 05:17:05

标签: objective-c cocoa macos user-interface interface-builder

我有一个位于NSScrollView顶部的按钮,而不在其中。当滚动视图滚动时,按钮会被剪切,按钮的一部分与滚动一起移动而另一部分保持定位。

为了更好地描述问题,这里有一个问题视频:

http://dl.dropbox.com/u/170068/ScrollTest.mov

计划的目标是让一个按钮位于文本视图的右上角,但在文本视图滚动时保持不变。因此,如果有人对如何实现这一点有任何想法,那将非常感激。

2 个答案:

答案 0 :(得分:0)

您应该子类化NSScrollView并覆盖“tile”方法以定位滚动视图的子控件。

- (void)tile
{
    [super tile];
    if (subControl)
    {
        NSRect subControlFrame = [subControl frame];

        // adjust control position here in the scrollview coordinate space

        // move controls
        [subControl setFrame:subControlFrame];
    }
}

我已经用这种方式实现了一个自定义ScrollView,其中嵌入了缩放控件和背景颜色选择器。

答案 1 :(得分:0)

不建议对非图层支持的视图重叠视图。我认为Interface Builder甚至会警告你。解决这个问题的最简单方法是让你的按钮支持图层。