我正在尝试在MAC应用程序上为NSImageView添加阴影。
我创建了一个自定义的NSImageView类“ShadowView.h”并修改了drawRect:就像这样:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowBlurRadius:5];
[shadow setShadowOffset:NSMakeSize(30.0, 3.0)];
[shadow setShadowColor:[NSColor redColor]];
[shadow set];
[self setWantsLayer:YES];
[self setShadow:shadow];
}
然而没有任何反应。此外,当我调试时,我可以看到上面的代码被调用。我从5年前开始看这个问题,但似乎不再适用了
Adding a Shadow to a NSImageView
谢谢!
答案 0 :(得分:1)
向视图添加阴影时,该视图的超级视图 还需要启用图层支持。如果它没有,则视图的阴影会被剪切到自己的边界,如此示例应用程序中所示:
确保在您观看的超级视图上调用-setWantsLayer:YES
(或检查"核心动画层"在Interface Builder中复选框),以确保阴影完全可见:
答案 1 :(得分:0)
你应该将它们设置在其他地方,例如initWithFrame:将它们从drawRect中取出:
[self setWantsLayer:YES];
[self setShadow:shadow];