2011-03-09 129 views
12

我有一个NSTableView重新加载。在加载新数据的同时,我想在微调器的顶部添加子视图。我希望ontop视图是半透明的,并且透视它下面的视图,使其变得模糊。我会如何去做这件事?如何在视图顶部添加模糊视图?

回答

18

最简单的解决方案,显著更何况比-bitmapImageRepEtc:之一,更适用到Mac OS比光栅化尺度方法,是设置覆盖视图以使用Core Animation底层,然后为该图层指定一个Core Image模糊滤镜。这是一种在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]; 
+3

看起来像这只有在视图完全覆盖其下的其他视图时才有效。当它仅部分覆盖它们时,视图下方的整个区域都模糊不清。 – adib 2013-01-31 11:59:34

+0

对不起,从死里复活 - setLayer所依赖的框架是什么? – capikaw 2013-02-17 22:56:58

+3

核心动画:QuartzCore.framework – 2013-02-18 17:25:29

-3

您是否尝试更改视图的Alpha属性(对于透明度)? 另外这里的一对模糊视图链接: Blur Effect for UIView

+1

我宁愿把这个不是模糊的像素化。 – Konrad77 2013-02-13 10:36:18

2

的基本技术将捕捉您的视图的图像,使用类似的NSView‑bitmapImageRepForCachingDisplayInRect:方法,处理该图像,使其模糊(核心形象是你的朋友在这里),然后用包含模糊图像的NSImageView覆盖您的视图。

这是造假的,当然,不过这演技是关于什么的:-)

相关问题