iOS修改button的點擊范圍


一般來說,按鈕的點擊范圍是跟按鈕的大小一樣的。若按鈕很小時,想增大點擊區域,網上通用的方法有
①設置btn圖片setImage,然后將btn的size設置的比圖片大
②在btn上添加一個比較大的透明btn
但以上有問題,若btn無圖片就無法設置;添加透明btn則會改變view的層級。所以此時最好的方法是重寫btn的

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

方法。例如:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ //當前btn大小
    CGRect btnBounds = self.bounds; //擴大點擊區域,想縮小就將-10設為正值
    btnBounds = CGRectInset(btnBounds, -10, -10); //若點擊的點在新的bounds里,就返回YES
    return CGRectContainsPoint(btnBounds, point); }

對CGRectInset的解釋
CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)作用是將rect坐標按照(dx,dy)進行平移,對size進行如下變換
新寬度 = 原寬度 - 2*dx;新高度 = 原高度 - 2*dy
即dx,dy為正,則為縮小點擊范圍;dx,dy為負的話,則為擴大范圍

UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)]; [self.view addSubview:view1]; CGRect rect2 = CGRectInset(view1.frame, 10, 20); UIView *view2 = [[UIView alloc]initWithFrame:rect2]; [self.view addSubview:view2]; NSLog(@"%@",NSStringFromCGRect(rect2));

結果為

//{{110, 120}, {180, 160}}

比較這兩個view的frame,即可印證該結論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM