如何在顶部设置灰色叠加层,但允许触摸它下面的按钮?
答案 0 :(得分:3)
您可以将userInteraction
叠加设置为false
。
答案 1 :(得分:0)
如上所述,您可以将userInteractionEnabled
设置为NO
。
但要注意:当您创建全屏透明视图并将其userInteractionEnabled
设置为NO
时,该视图的所有子视图都不会是响应用户操作。如果您在视图上添加按钮,它将不会响应用户点击!还有一个问题:如果您将该视图的alpha
值设置为透明,例如0.4
,那么它的所有子视图也都是透明的!
解决方案很简单:不要在透明视图上放置任何子视图,而是将其他元素添加为视图的兄弟元素。这是Objective-C代码,用于表明我的意思:(注意说明这一切的评论):
//Create a full screen transparent view:
UIView *vw = [[UIView alloc] initWithFrame:self.view.bounds];
vw.backgroundColor = [UIColor greenColor];
vw.alpha = 0.4;
vw.userInteractionEnabled = NO;
//Create a button to appear on top of the transparent view:
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 80, 44)];
btn.backgroundColor = [UIColor redColor];
[btn setTitle:@"Test" forState:UIControlStateNormal];
[btn setTitle:@"Pressed" forState:UIControlStateHighlighted];
//(*) Bad idea: [vw addSubview:btn];
//(**) Correct way to have the button respond to user interaction:
// Add it as a sibling of the full screen view
[self.view addSubview:vw];
[self.view addSubview:btn];