重寫一個Button類,這個類繼承與UIButton,重寫 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event,方法就可以擴大按鈕的點擊區(qū)域.修改bounds的值就可以滿足我的需求,詳細實現見下面的代碼.
– (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent)event
{
//通過修改bounds 的x,y 值就可以只向X 軸或者Y軸的某一個方向擴展
//當bounds 的X 為負,Y 為0,就只向X的正方向擴展點擊區(qū)域,反之亦然
//當bounds 的Y 為負,X 為0,就只向Y的正方向擴展點擊區(qū)域,反之亦然
//當bounds 的Y 為0,X 為0,widthDelta,heightDelta來控制擴大的點擊區(qū)域 ,這個是同時向X 軸正負方向或者同時向Y軸的正負方向
CGRect bounds =CGRectMake(0, -70, self.bounds.size.width, self.size.height);
//90 是希望的X 軸或者Y軸方向的點擊區(qū)域的寬度或者高度
CGFloat widthDelta =90- bounds.size.width;
CGFloat heightDelta =90- bounds.size.height;
bounds =CGRectInset(bounds, 0, -0.5 heightDelta);//注意這里是負數棒旗,擴大了之前的bounds的范圍
return CGRectContainsPoint(bounds, point);
},
github地址