根據設定按鈕方法可分為兩種方式
1.setimage: 設定內容顯示模式為居中,然後再設定的邊距和按鈕的大小
[[button imageview] setcontentmode: uiviewcontentmodecenter];
[[button setimage:[uiimage imagenamed:@"***.png"] forstate:uicontrolstatenormal];
//根據需求設定與按鈕周邊的邊距及按鈕的frame
[button setimageedgeinsets:uiedgeinsetsmake(10, 10, 10, 10)];
button.frame = cgrectmake(30, 30, 30, 30);
2. setbackgroundimage:設定按鈕背景上述方法就無效了,此時可以通過oc黑魔法來解決. 首先新增乙個uibutton的category來重寫hittest,然後通過為分類新增的乙個屬性來擴大按鈕的響應區域
uibutton+enlargehitarea.h
@inte***ce uibutton (extensions)
@property(nonatomic, assign) uiedgeinsets hittestedgeinsets;
@end
uibutton+enlargehitarea.m
#import "uibutton+enlargehitarea.h"
#import @implementation uibutton (enlargehitarea)
@dynamic hittestedgeinsets;
static const nsstring *key_hit_test_edge_insets = @"hittestedgeinsets";
-(void)sethittestedgeinsets:(uiedgeinsets)hittestedgeinsets
-(uiedgeinsets)hittestedgeinsets else
}- (bool)pointinside:(cgpoint)point withevent:(uievent *)event
cgrect relativeframe = self.bounds;
cgrect hitframe = uiedgeinsetsinsetrect(relativeframe, self.hittestedgeinsets);
return cgrectcontainspoint(hitframe, point);
}@end
通過設定按鈕分類的hittestedgeinsets屬性擴大按鈕的響應範圍
#import "uibutton+enlargehitarea.h"
[button sethittestedgeinsets:uiedgeinsetsmake(-10, -10, -10, -10)];
iOS 為UIButton擴大點選響應區域
我們可以為uibutton建立乙個category,然後利用runtime的繫結屬性,來擴大響應區域。先看一下.h檔案裡的,只宣告了乙個函式。使用的時候直接利用這個函式擴大四周的響應區域。import inte ce uibutton enlargetouchaera void setenlarge...
縮小客戶區 擴大非客戶區 的方法
當windows收到 wm nccalcsize 訊息時會指定客戶區大小,我們可以在這個時候設定客戶區的大小。引數lparam是乙個nccalcsize params結構,儲存包含三個矩形的陣列。第乙個矩形儲存視窗的客戶區。你只要改寫這個矩形的值就可以修改客戶區的大小了。修改了客戶區的大小後,還要響...
UIButton 觸發多個事件 響應同一函式
1v1繫結方法 uibutton利用函式 void addtarget id target action sel action forcontrolevents uicontrolevents controlevents 繫結事件。一般的n v 1繫結方法 一般是每次繫結乙個事件,如 uicontr...