大家在實(shí)際的開(kāi)發(fā)中有沒(méi)有遇到過(guò)給了你一張很小的圖標(biāo),但是又想要很大點(diǎn)擊范圍的情況,通常解決方案有幾種:
第一種:
方案:button 范圍做大
缺點(diǎn):如果圖標(biāo)剛在在中間還算好,但是通常來(lái)說(shuō)圖標(biāo)的都是要靠邊的,所以很不靠譜
第二種:
方案:重寫button內(nèi)部的img布局
缺點(diǎn):麻煩,各種改
第三種:
方案:改變img的內(nèi)邊距
缺點(diǎn):很難非常的準(zhǔn)確到達(dá)自己想要的效果,如果美工姐姐的像素眼爆發(fā)就呵呵噠....
Snip20170106_23.png
Snip20170106_24.png
接下來(lái)是是給大家推薦的
第四中方案
重寫button的點(diǎn)擊范圍的判斷,修改button的點(diǎn)擊范圍實(shí)現(xiàn) pointInside:withEvent:event
先看看效果(顯示著紅框是為了方便調(diào)試)
click2.gif
click.gif
解釋下這個(gè)類的使用
只要button先繼承MCMagnifyLandButton類,其他使用都一樣,需要改變點(diǎn)擊范圍時(shí)執(zhí)行下面的方法
/*
* 清空
*/
- (void)clear;
/*
* 拓展右邊空間
*/
- (void)increaseRight:(CGFloat)width;
/*
* 拓展左邊空間
*/
- (void)increaseLeft:(CGFloat)width;
/*
* 拓展上層空間
*/
- (void)increaseUp:(CGFloat)width;
/*
* 拓展下層空間
*/
- (void)increaseDown:(CGFloat)width;
/*
* 向右移動(dòng)
*/
- (void)moveRight:(CGFloat)width;
/*
* 向左移動(dòng)
*/
- (void)moveLeft:(CGFloat)width;
/*
* 向上移動(dòng)
*/
- (void)moveUp:(CGFloat)width;
/*
* 向下移動(dòng)
*/
- (void)moveDown:(CGFloat)width;
/*
* 原始大小翻倍,不包括拓展空間
*/
- (void)multiLand:(NSInteger)multi;
Demo里寫的可能更詳細(xì),可以下載來(lái)看看,代碼量其實(shí)很小
如果大家感覺(jué)不錯(cuò)就star下:https://github.com/CZXBigBrother/MCMagnifyLandButton