如何在documentView
中隐藏NSScrollView
?
效果看起来像iBook Author:
答案 0 :(得分:0)
您需要在文档视图中插入内容以允许显示阴影的空间,然后将视图分层并在其上设置阴影。例如:
view.wantsLayer = YES;
NSShadow *shadow = [NSShadow new];
shadow.shadowColor = [NSColor blackColor]
shadow.shadowBlurRadius = 4.f;
shadow.shadowOffset = NSMakeSize(0.f, -5.f);
view.shadow = shadow;
答案 1 :(得分:0)
NSScrollView contentView是一个NSView子类,它有一个阴影字段,如果你创建一个阴影对象并将其指定给这个字段,那么视图会在绘制时自动显示一个阴影
NSShadow* shadow = [[NSShadow alloc] init];
shadow.shadowBlurRadius = 2; //set how many pixels the shadow has
shadow.shadowOffset = NSMakeSize(2, -2); //the distance from the view the shadow is dropped
shadow.shadowColor = [NSColor blackColor];
self.scrollView.contentView.shadow = shadow;
这是有效的,因为在drawRect上绘制的所有视图都使用[shadow set]来使用此shadow属性。
在绘制操作期间执行[阴影设置]会使之后绘制的内容在
下复制答案 2 :(得分:0)
我刚接触堆栈溢出的帖子,但是我遇到了同样的问题并且已经解决了,所以我想在网上搜索几个小时后找到解决方案就可以回答了。
我的解决方案是使用以下用于drawRect ...
的代码为NSClipView创建一个子类- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
NSRect childRect = [[self documentView] frame];
[NSGraphicsContext saveGraphicsState];
// Create the shadow below and to the right of the shape.
NSShadow* theShadow = [[NSShadow alloc] init];
[theShadow setShadowOffset:NSMakeSize(4.0, -4.0)];
[theShadow setShadowBlurRadius:3.0];
// Use a partially transparent color for shapes that overlap.
[theShadow setShadowColor:[[NSColor grayColor]
colorWithAlphaComponent:0.95f]];
[theShadow set];
[[self backgroundColor] setFill];
NSRectFill(childRect);
// Draw your custom content here. Anything you draw
// automatically has the shadow effect applied to it.
[NSGraphicsContext restoreGraphicsState];
}
然后,您需要创建子类的实例并使用setContentView选择器设置它。
每次内容视图大小更改时,您还需要重新绘制剪辑视图。如果您的内容视图设置为在用户需要时根据画布大小进行更改,除非您重新绘制剪辑视图,否则会留下一些令人讨厌的阴影标记。
你不需要像其他人所建议的那样搞乱剪辑。
希望它有所帮助!