Objective c NSScrollView剪辑覆盖的UI元素
我有一个按钮,它位于NSScrollView的顶部,而不是内部。当scrollview滚动时,按钮会被剪断,其中一部分按钮会随着滚动而移动,另一部分保持在原来的位置 为了更好地描述这个问题,这里有一个关于这个问题的视频:Objective c NSScrollView剪辑覆盖的UI元素,objective-c,cocoa,macos,user-interface,interface-builder,Objective C,Cocoa,Macos,User Interface,Interface Builder,我有一个按钮,它位于NSScrollView的顶部,而不是内部。当scrollview滚动时,按钮会被剪断,其中一部分按钮会随着滚动而移动,另一部分保持在原来的位置 为了更好地描述这个问题,这里有一个关于这个问题的视频: 计划的目标是让一个按钮位于文本视图的右上角,但在文本视图滚动时保持不变。因此,如果有人对如何实现这一点有任何想法,我们将不胜感激。您应该将NSScrollView子类化,并覆盖“平铺”方法以定位滚动视图的子控件 - (void)tile { [super tile];
计划的目标是让一个按钮位于文本视图的右上角,但在文本视图滚动时保持不变。因此,如果有人对如何实现这一点有任何想法,我们将不胜感激。您应该将NSScrollView子类化,并覆盖“平铺”方法以定位滚动视图的子控件
- (void)tile
{
[super tile];
if (subControl)
{
NSRect subControlFrame = [subControl frame];
// adjust control position here in the scrollview coordinate space
// move controls
[subControl setFrame:subControlFrame];
}
}
我用这种方法实现了一个带有缩放控制和背景颜色选择器的自定义滚动视图。对于非图层背景视图,不建议使用重叠视图。我认为Interface Builder甚至会警告您这一点。解决此问题的最简单方法是使按钮层向后。我开始尝试此方法,直到我意识到这需要按钮是scoll视图的子视图,而不是。应用程序中有按钮将位于滚动视图上方的点,也有按钮不在滚动视图上方的点。我错过什么了吗?还有别的办法吗?感谢您的帮助。如果您需要按钮始终与scrollview部分重叠,那么我建议您制作一个小窗口,将其作为子窗口连接到主窗口,并将其放置在NSScrollView上,在该窗口上放置一个按钮。这应该行得通。