方法一:类别

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c32275 }
span.s1 { color: #822e0e }
span.s2 { }
span.s3 { color: #c32275 }
span.s4 { color: #703daa }

#import <UIKit/UIKit.h>

#import <objc/runtime.h>

@interface UIButton (EnlargeEdge)

- (void)XSsetEnlargeEdge:(CGFloat) size;

- (void)XSsetEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left;

@end

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3d1d81 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c32275 }
span.s1 { color: #822e0e }
span.s2 { }
span.s3 { color: #c32275 }
span.s4 { color: #703daa }
span.s5 { color: #000000 }
span.s6 { color: #539aa4 }
span.s7 { color: #6122ae }
span.s8 { color: #3d1d81 }
span.s9 { color: #294c50 }

#import "UIButton+EnlargeEdge.h"

@implementation UIButton (EnlargeEdge)

static char topNameKey;

static char rightNameKey;

static char bottomNameKey;

static char leftNameKey;

- (void)XSsetEnlargeEdge:(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)XSsetEnlargeEdgeWithTop:(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;

}

}

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

{

CGRect rect = [self enlargedRect];

if (CGRectEqualToRect(rect, self.bounds))

{

return [super pointInside:point withEvent:event];

}

return CGRectContainsPoint(rect, point) ? YES : NO;

}

@end

方法二:

第二种:直接创建一个UIButton类,然后复写pointInside方法

使用时继承于此类即可

.h文件

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

.m文件

  1. #import "BiggerClickAreaButton.h"
  2. @implementation BiggerClickAreaButton
  3. - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
  4. {
  5. CGRect bounds = self.bounds;
  6. //若原热区小于44x44,则放大热区,否则保持原大小不变
  7. CGFloat widthDelta = MAX(44.0 - bounds.size.width, 0);
  8. CGFloat heightDelta = MAX(44.0 - bounds.size.height, 0);
  9. bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
  10. return CGRectContainsPoint(bounds, point);
  11. }
  12. @end

使用时直接继承创建即可

最新文章

  1. 用JqueryUI的Dialog+IFrame实现仿模态窗口效果
  2. AOJ673 聪明的输入法(字典树)
  3. 如何利用.snk文件生成DLL文件中的Publickeytoken
  4. IOS 导航栏
  5. JProfiler8 注册码序列号
  6. [CareerCup] 1.5 Compress String 压缩字符串
  7. java泛型的限制
  8. HDU 2122
  9. Apache Struts 跨站脚本漏洞
  10. tab切换jquery代码
  11. Redis和MongoDB的区别(面试受用)
  12. 利用MMdnn对比keras和mxnet
  13. Websphere MQ Cluster
  14. PHP ==与===的区别
  15. idea在哪执行maven clean?
  16. bzoj1040 骑士
  17. spring学习笔记(二)
  18. C++面试常见问题
  19. Hibernate_Validator学习
  20. java动态代理(JDK和CGLIB)笔记

热门文章

  1. Bootstrap入门(八)组件2:下拉菜单
  2. 一步一步学Java IO
  3. iOS 多线程NSThread理解与场景示例
  4. 《JAVASCRIPT高级程序设计》Canvas绘图-2D上下文
  5. canvas绘图详解-06-绘制一个五角星-常用绘图原理
  6. oracle_权限
  7. ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存
  8. 报表学习总结(一)——ASP.NET 水晶报表(Crystal Reports)的简单使用
  9. Jenkins权限配置失误后导致登录失败的解决办法
  10. java GUI简单记事本