如何调暗/禁用当前视图?

时间:2013-11-12 10:03:27

标签: objective-c macos cocoa nsview

是否可以在cocoa中调暗当前视图?在某个操作中,我想让屏幕变得更暗,并阻止用户与屏幕交互。

2 个答案:

答案 0 :(得分:3)

根据@Lord Zsolt提出的想法,可以在OS X中实现同样的目的:

如果要使窗口变暗,请添加以下代码。

NSView *transparentBlackView = [[NSView alloc] initWithFrame:[[yourwindow contentView] frame]];

CALayer *viewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.4)]; //RGB plus Alpha Channel
[transparentBlackView setWantsLayer:YES]; 
[transparentBlackView setLayer:viewLayer];

[[yourwindow contentView] addSubview:transparentBlackView];

也不要忘记将QuartzCore.framework添加到您的项目中。然后使用#import<QuartzCore/QuartzCore.h>

在您的班级中导入

答案 1 :(得分:1)

编辑:我现在才注意到,它是OSX,而​​不是iOS。虽然这个想法仍然应该是一样的。

禁用用户互动:

[self.view setUserIntractionEnabled:NO];

然后添加一个黑色的UIView,其上面的alpha为0.2。

UIView *transparentBlackView = [[UIView alloc] initWithFrame:self.view.frame]
[transparentBlackView setBackgroundColor:[UIColor blackColor];
[transparentBlackView setAlpha:0.2];
[self.view addSubview:transparentBlackView];

然后你可以编写一个自定义方法,并使用performSelector:afterDelay删除transparentBlackView。