在项目开发中,遇到了一个问题,就是一个button按钮改变了它的layer层之后使其变成一个圆形,但是其点击区域还市矩形的范围,所以在有多个按钮紧密分布时,会使其点击事件出现错乱。
最后,博主终于解决了这一问题,就是在子类化一个button,重写其内部的一个私有方法,在其图层画一个圆,设置其点击区域为这个圆形范围,如果超过了这个圆形区域,则点击无效
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
//首先调用父类的方法确定点击的区域确实在按钮的区域中
BOOL res = [super pointInside:point withEvent:event];
if (res) {
//绘制一个圆形path
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
if ([path containsPoint:point]) {
//如果在path区域内,返回YES
return YES;
}
return NO;
}
return NO;
}