我有一个NSTableView需要重新加载数据。在加载新数据时,我想添加一个带有旋转图标的子视图叠加在其上。我希望叠加的视图半透明并且使下面的视图变模糊。我应该怎么做?
我有一个NSTableView需要重新加载数据。在加载新数据时,我想添加一个带有旋转图标的子视图叠加在其上。我希望叠加的视图半透明并且使下面的视图变模糊。我应该怎么做?
最简单的解决方法是将你的覆盖视图设置为使用Core Animation支持层,然后给该层添加一个核心图像模糊滤镜。这种技术在Mac OS中随处可见,从Dock菜单到菜单栏本身都有应用。Interface Builder使其非常容易设置,但你也可以像这样在代码中实现:
CALayer *backgroundLayer = [CALayer layer];
[backgroundView setLayer:backgroundLayer];
[backgroundView setWantsLayer:YES];
CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
[blurFilter setDefaults];
[backgroundView layer].backgroundFilters = [NSArray arrayWithObject:blurFilter];
你应该去 Github 上查看 RMBlurredView
: https://github.com/raffael/RMBlurredView
这是一个易于使用的 NSView 子类,可以为您完成所有操作。请确保在父视图上设置 setWantsLayer:YES
!
有关详细信息,请参见 Cocoanetics 文章:http://www.cocoanetics.com/2013/10/blurring-views-on-mac/
NSView
的 ‑bitmapImageRepForCachingDisplayInRect:
方法,处理该图像以使其模糊(Core Image 在此处非常有用),然后使用包含模糊图像的 NSImageView
覆盖您的视图。