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

Objective c 如何调暗/禁用当前视图?,objective-c,macos,cocoa,nsview,Objective C,Macos,Cocoa,Nsview,是否可以在cocoa中使当前视图变暗?在某个特定操作中,我希望使屏幕变暗一点,并防止用户与屏幕交互。编辑:我现在才注意到,这是OSX,而不是iOS。尽管想法应该还是一样。 禁用用户交互: [self.view setUserIntractionEnabled:NO]; 然后添加一个黑色的UIView,其上方类似alpha 0.2 UIView *transparentBlackView = [[UIView alloc] initWithFrame:self.view.frame] [tran

是否可以在cocoa中使当前视图变暗?在某个特定操作中,我希望使屏幕变暗一点,并防止用户与屏幕交互。

编辑:我现在才注意到,这是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。

根据@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

在课堂上导入它。请澄清范围;是视图还是屏幕?整个应用程序窗口都不是。您需要更精确。当前视图对用户可见user@trojanfoe我必须调暗图像(使其变暗/变黑)并禁用屏幕上的所有控件是的,它们是相同的,只是缺少键方法
setUserIntractionEnabled
…是的,我说过它们在OSX中不工作,但可能每个都有一个OSX对应项。