中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

iOS中UIButton如何擴大按鈕響應區域

這篇文章主要為大家展示了“iOS中UIButton如何擴大按鈕響應區域”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“iOS中UIButton如何擴大按鈕響應區域”這篇文章吧。

目前創新互聯公司已為超過千家的企業提供了網站建設、域名、網頁空間、網站托管、企業網站設計、仁布網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

在開發中有時會遇見設計圖里按鈕設計的特別小,這時會用到手動擴大UIButton的響應范圍,下面有兩個解決辦法:

第一種方法:創建一個類目:UIButton+EnlargeTouchArea

.h文件

#import <UIKit/UIKit.h>
 
@interface UIButton (EnlargeTouchArea)
 
- (void)setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left; 
- (void)setEnlargeEdge:(CGFloat) size;
 
@end

.m文件

 //
// UIButton+EnlargeTouchArea.m
// HeBeiFM
//
// Created by Apple on 16/4/27.
// Copyright &copy; 2016年 Apple. All rights reserved.
//
 
#import "UIButton+EnlargeTouchArea.h"
#import <objc/runtime.h>
 
@implementation UIButton (EnlargeTouchArea)
 
static char topNameKey;
static char rightNameKey;
static char bottomNameKey;
static char leftNameKey;
 
- (void)setEnlargeEdge:(CGFloat) size
{
 objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:size], OBJC_ASSOCIATION_COPY_NONATOMIC);
}
 
- (void) setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left
{
 objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:right], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:bottom], OBJC_ASSOCIATION_COPY_NONATOMIC);
 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC);
}
 
- (CGRect) enlargedRect
{
 NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);
 NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);
 NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);
 NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);
 if (topEdge && rightEdge && bottomEdge && leftEdge)
 {
  return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,
       self.bounds.origin.y - topEdge.floatValue,
       self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,
       self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);
 }
 else
 {
  return self.bounds;
 }
}
 
- (UIView*) hitTest:(CGPoint) point withEvent:(UIEvent*) event
{
 CGRect rect = [self enlargedRect];
 if (CGRectEqualToRect(rect, self.bounds))
 {
  return [super hitTest:point withEvent:event];
 }
 return CGRectContainsPoint(rect, point) ? self : nil;
}
 
@end

使用方法:

UIButton *button = [UIButton new];
[button setEnlargeEdge:20];
 //或者
 [button setEnlargeEdgeWithTop:20 right:20 bottom:20 left:20];

第二種:直接創建一個UIButton類,然后復寫pointInside方法

使用時繼承于此類即可

.h文件

#import <UIKit/UIKit.h>
 
@interface BiggerClickAreaButton : UIButton
 
@end

.m文件

#import "BiggerClickAreaButton.h"
 
@implementation BiggerClickAreaButton
 
- (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);
}
 
 
@end

使用時直接繼承創建即可。

以上是“iOS中UIButton如何擴大按鈕響應區域”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

名稱欄目:iOS中UIButton如何擴大按鈕響應區域
標題來源:http://www.2m8n56k.cn/article0/jphsoo.html

成都網站建設公司_創新互聯,為您提供移動網站建設網站維護關鍵詞優化微信小程序網站導航網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
主站蜘蛛池模板: 国产亚洲精品一区二区 | 2020亚洲男人天堂 | 欧美视频精品在线观看 | 成人看片免费 | 国产成人v爽在线免播放观看 | 狠狠色丁香婷婷久久综合不卡 | 九九成人 | 另类一区二区三区 | 国产成人啪精品视频免费网 | 亚洲综合伊人色一区 | 国产区精品在线 | 久久久久久久久久久久福利 | 永久免费毛片手机版在线看 | 欧美一级特黄特黄做受 | 久国产精品视频 | 亚洲综合国产一区在线 | 成人网视频在线观看免费 | 成人在线中文字幕 | 66精品| 久久香蕉精品成人 | 中文三级视频 | 国产成人精品高清在线 | 521av香蕉 | 国产欧美日韩精品一区二 | 久久精品免观看国产成人 | 久草热久草视频 | 日本免费小视频 | 国产www| 午夜久久久久久久 | 午夜一级成人 | 国产精品免费看久久久香蕉 | 精品亚洲一区二区 | 2021最新国产精品一区 | 国产成人精品日本亚洲专 | 国产高清在线精品 | 神马午夜-午夜片 | 18videosex性欧美69 | 中国一级特黄真人毛片 | 欧美成人免费观看国产 | 成人网18免费下 | 美女扒开双腿让男人爽透视频 |