【发布时间】:2011-12-13 16:10:32
【问题描述】:
我有一个很大的问题,我自己真的解决不了。
结果应该是这样的:
这张图片是用 Photoshop 制作的,是我尝试构建的界面的一部分。
在中间你看到一些东西,应该是一个项目列表,你应该可以滚动,如果列表比视图大。
所以我正在制作这样的滚动视图:(由于某种原因,我无法在界面构建器中执行此操作,并希望它以编程方式工作)
NSScrollView *projectsListView = [[NSScrollView alloc] initWithFrame:NSMakeRect(15, 2, 801, 588)];
[projectsListView setHasVerticalScroller:YES];
然后我创建内容视图并将图案图像设置为背景色:
NSClipView *contentView = [[NSClipView alloc] initWithFrame:NSMakeRect(0, 0,
[projectsListView frame].size.width, [projectsListView frame].size.height+(98*2))];
[contentView setBackgroundColor:[NSColor colorWithPatternImage:[NSImage imageNamed:@"BoxLineBackground"]]];
[contentView setDrawsBackground:YES];
然后将视图设置为文档视图:
[projectsListView setDocumentView:contentView];
应该可以吧? 然而,内容视图在滚动时被剪裁并看起来像这样:
我试过这个来修复它,但它什么也没做:
[[projectsListView documentView] setCopiesOnScroll:NO];
我也试过这个,但它导致内容视图根本不滚动。 图像保持不变,但我可以正常移动滚动条。
[[projectsListView contentView] setCopiesOnScroll:NO];
如果我尝试使用 setContentView 设置内容视图:而不是使用 setDocumentView: 它可能工作,但滚动条消失了,所以它也不能正常工作。
我真的很想使用 patternimage 方法,因为我不知道列表会有多长。这取决于用户。
另外一个问题是让整个事情变得四舍五入,但这并不重要。我尝试使用透明边框图像并使用 NSImageView 覆盖 NSScrollView,但这又会导致损坏,因为它会将图像视图的覆盖部分与滚动视图的内容一起剪切和移动。
任何人有想法,如何实现这一目标?
谢谢
【问题讨论】:
标签: objective-c cocoa background-image clipping nsscrollview