Objective C - OS X - 将 NSShadow 添加到 NSImageView 的问题
Objective C - OS X - Issue adding NSShadow to NSImageView
我正在尝试向 MAC 应用程序的 NSImageView 添加阴影。
我创建了一个自定义 NSImageView class "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
谢谢!
你应该在其他地方设置它们,比如 initWithFrame:将它们从 drawRect 中取出:
[self setWantsLayer:YES];
[self setShadow:shadow];
向视图添加阴影时,该视图的父视图还 需要启用图层支持。否则,视图的阴影会在其自身边界处被裁剪,如示例应用所示:
确保在视图的父视图上调用 -setWantsLayer:YES
(或选中 Interface Builder 中的 "Core Animation Layer" 复选框)以确保阴影完全可见:
我正在尝试向 MAC 应用程序的 NSImageView 添加阴影。
我创建了一个自定义 NSImageView class "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
谢谢!
你应该在其他地方设置它们,比如 initWithFrame:将它们从 drawRect 中取出:
[self setWantsLayer:YES];
[self setShadow:shadow];
向视图添加阴影时,该视图的父视图还 需要启用图层支持。否则,视图的阴影会在其自身边界处被裁剪,如示例应用所示:
确保在视图的父视图上调用 -setWantsLayer:YES
(或选中 Interface Builder 中的 "Core Animation Layer" 复选框)以确保阴影完全可见: