iOS UIbutton擴大熱區

Apple的iOS人機交互設計指南中指出,按鈕點擊熱區應不小于44x44pt,否則這個按鈕就會讓用戶覺得“很難用”,因為明明點擊上去了,卻沒有任何響應。

但我們有時做自定義Button的時候,設計圖上的給出按鈕尺寸明顯要小于這個數。例如我之前做過的自定義Slider上的Thumb只有12x12pt,做出來后我發現自己根本點不到按鈕……

解決方法是 重寫按鈕中的pointInside方法,使得按鈕熱區不夠44×44大小的先自動縮放到44×44,再判斷觸摸點是否在新的熱區內。

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

{

CGRect bounds = self.bounds;

//若原熱區小于44x44,則放大熱區,否則保持原大小不變

CGFloat widthDelta = MAX(44.0 - bounds.size.width, 0);

CGFloat heightDelta = MAX(44.0 - bounds.size.height, 0);

bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);

return CGRectContainsPoint(bounds, point);

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 方法一: #import @interface UIButton (EnlargeTouchArea) - (vo...
    與瑾閱讀 323評論 0 1
  • App通過響應者對象來接收和處理事件,響應者對象都是UIResponder的子類對象,常見的UIView,UIVi...
    FlyElephant閱讀 1,256評論 0 5
  • 1、禁止手機睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa閱讀 1,143評論 1 6
  • Question:Given an unsorted array of integers, find the le...
    yangqi916閱讀 459評論 0 0
  • NBN的故事82:改藥 時間:9000年3月24日 地點:地球 喬治一等戰爭勝利就立刻把安德安博士叫過來,問道...
    我我了閱讀 235評論 0 0