UIView alpha = 0会导致触摸被删除到下面的视图中

Joe*_*Joe 10 uibutton uiview ios

所以我创建了一个玻璃窗格或自定义UIView来处理触摸.此玻璃窗格位于其他视图的顶部,例如虚拟UIButton.当我将alpha设置为0时,触摸实际上会被玻璃视图下方的视图截获.这是错的.但是,当我将alpha设置为0.2之类的低值时,玻璃窗格会截取触摸.

alpha设置在Interface Builder中完成.

有人知道如何将alpha设置为0并且仍然可以让这个玻璃窗格拦截触摸吗?

Nek*_*kto 15

是的,这是标准行为.

例如,您可以设置明确的背景UIView:

UIView *touchHandlerView;
touchHandlerView.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,用户不会看到该视图 - 我认为你想要做到这一点?


Dav*_*idA 14

是的,alpha=0.0f;并且hidden=YES;具有相同的效果.这非常有用,因为你可以设置淡出动画,而不必担心触摸不可见物体 - 也就是说你可以说:

-(void)hideOverlayButton
{
    [UIView beginAnimations:@"hideOverlayButton" context:nil];
    [UIView setAnimationDuration:0.2];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [self.overlayButton setAlpha:0.0];
    [UIVIew commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)

然后,当动画完成时,按钮将不响应触摸 - 无需担心停用它.

如果你想要的是隐形按钮,在视图上放置一个UIButton,确保它在前面(界面构建器中列表的底部),将它的类型设置为自定义; 不要设置图像,背景图像或标题.默认情况下,在界面构建器中,您将获得1的alpha和清晰的颜色.然后您可以按照常规方式连接IBOutlet.

  • 嗨,威尔,"使用alpha值要求图形硬件将对象中的每个像素与下面的所有内容混合在一起.这是计算密集型的.另一方面,隐藏标志是一个开关.如果打开它,操作系统知道它根本不需要绘制对象." 我从iphonedevsdk.com/forum/iphone-sdk-development/65525-whats-the-difference-between-alpha0-and-hiddenyes.html得到了这个,希望它能回答你的问题. (2认同)