一个基于Ole Begemann的OBShapedButton的UIImageView
子类,它忽略透明像素的触摸。
RMShapedImageView
通过重写pointInside:withEvent:
来实现这个魔术。此方法用于确定触摸是否在视图中。在我们的情况下,我们只想在相应的像素不是透明的(alpha > 0
)时返回YES
。
RMShapedImageView.h
和RMShapedImageView.m
添加到您的项目中。UIImageView
的类设置为RMShapedImageView
)中将您的UIImageView
替换为RMShapedImageView
。触摸是不精确的事物,查询单个像素的alpha值可能过于严格,尤其是如果图像被缩小的话。此外,如果图像有阴影,您可能还想忽略它们上的触摸。RMShapedImageView
有两个配置选项来解决这个问题
shapedTransparentMaxAlpha
:认为是透明的最大alpha值。默认为0。shapedPixelTolerance
:将要检查的点周围的像素数。如果至少有一个像素的alpha值大于shapedTransparentMaxAlpha
,则pointInside:withEvent:
将返回YES
。默认为0。版权所有2013 Robot Media SL
根据Apache License,版本2.0(“许可证”);除非您按照许可证的规定或以书面形式达成协议,否则不得使用此文件。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或以书面形式达成协议,否则在许可证下分发或提供的软件按照“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言和等级限制,请参阅许可证。