我有一个圆形的 UIView。我必须仅检测紫色圆圈内的触摸。所有在圆圈外的触摸,例如黑色方块和白色背景必须被忽略。
设置半径和检测触摸将没有任何用处,因为当多个视图使用不同的控制器彼此重叠时,将很难管理。
有什么办法吗,我可以做到这一点。请您给我一些建议来做到这一点。
创建一个自定义子类UIView
, say CircularView
并覆盖pointInside:withEvent:
方法忽略位于圆外的点。该子类的对象将是独立的,您可以按照您想要的任何方式排列它。
要确定圆形区域是否包含点,可以使用 Core Graphics 函数CGPathContainsPoint
or the containsPoint:
中的方法UIBezierPath
。这将要求你remember the CGPathRef
or the UIBezierPath
代表圆的对象。在此示例中,我假设您已使用以下命令创建了一条圆形路径UIBezierPath
并且它作为属性存储在CircularView
class.
@interface CircularView : UIView
// initialize this when appropriate
@propery (nonatomic, strong) UIBezierPath *circularPath;
@end
@implementation CircularView
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
return [circularPath containsPoint:point];
}
@end
就是这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)