系统UIButton自带的方式为矩形,通过设置layer层可以将图片裁剪为圆形,但是点击区域仍是矩形。
即: btn.layer.cornerRadius = 150; //矩形边长的一半
btn.layer.masksToBounds = NO;//设置超过子图层的部分裁减掉
为解决这个为题,本文的方法是,创建UIButton子类,重写UIButton的- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event的方法。代码如下:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
BOOL flag = [super pointInside:point withEvent:event];
if (flag) {
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
if ([path containsPoint:point]) {
return YES;
}
}
return NO;
}
网友评论