因为Apple 规定 点击范围最好不要小于 44.0 point
首先,我们得继承(或者扩展类)一个UIButton,然后重写 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 这个方法
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
//这种是 自己定义button的具体范围
CGRect bounds =self.bounds;
CGFloat widthDelta =44.0- bounds.size.width;
CGFloat heightDelta =44.0- bounds.size.height;
/* 1.注意这里是负数,扩大了之前的bounds的范围
* 2.通过第二个参数 dx和第三个参数 dy 重置第一个参数rect 作为结果返回。
* 重置的方式为,首先将rect 的坐标(origin)按照(dx,dy) 进行平移,然后将rect的大小(size) 宽度缩小2倍的dx,高度缩小2倍的dy;
* 所以我们这里设置的范围就是44.0 *44.0 如果想设置大点就把上面的宽高44.0 改一下
*/
bounds =CGRectInset(bounds, -0.5* widthDelta, -0.5* heightDelta);
//CGRectContainsPoint函数:判断给定的点是否被一个CGRect包含
return CGRectContainsPoint(bounds, point);
}
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
//这种是范围向外扩展 2*10 如果是正的 就是缩小 2*10
CGRect bounds =self.bounds;
bounds =CGRectInset(bounds,-10 ,-10 );
return CGRectContainsPoint(bounds, point);
}