我有一个重新加载的NSTableView。在加载新数据时,我想用微调器添加一个子视图。我希望ontop上的视图是半透明的,并显示其下方的视图,模糊。我该怎么做呢?
答案 0 :(得分:18)
最简单的解决方案 - 明显比-bitmapImageRepEtc:
解决方案更多,并且比光栅化比例方法更适用于Mac OS - 是将叠加视图设置为使用核心动画背衬层,然后提供该层核心图像模糊滤镜。这是一种在整个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];
答案 1 :(得分:3)
您应该在guthub上查看RMBlurredView
:https://github.com/raffael/RMBlurredView
这是一个易于使用的NSView子类,可以为您完成所有这些。请务必在父视图上设置setWantsLayer:YES
!
有关详细信息,请查看Cocoanetics文章:http://www.cocoanetics.com/2013/10/blurring-views-on-mac/
答案 2 :(得分:2)
基本技术是使用‑bitmapImageRepForCachingDisplayInRect:
NSView
NSImageView
方法捕捉视图图像,处理该图像使其模糊(Core Image是您的朋友)然后使用包含模糊图像的{{1}}覆盖您的视图。
这当然是伪造的,但这就是表演的目的: - )
答案 3 :(得分:-3)
您是否尝试更改视图的Alpha属性(透明度)? 这里还有一个模糊视图的链接: Blur Effect for UIView