美文网首页
iOS-简单的UIButton点击区域扩大,不影响图片尺寸

iOS-简单的UIButton点击区域扩大,不影响图片尺寸

作者: 子小每文 | 来源:发表于2018-06-14 11:53 被阅读0次

    简单的记录一下,其实很简单的问题,UI图片做的小点就OK,每个人都会遇到吧,那就把代码贴近来,自己写粘贴吧

    import <UIKit/UIKit.h>

    @interface UIButton (Extensions)

    • (void)setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left;
      @end

    import "UIButton+Extensions.h"

    import <objc/runtime.h>

    @implementation UIButton (Extensions)

    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;
      }
      }
      //重写

    • (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 setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];

    相关文章

      网友评论

          本文标题:iOS-简单的UIButton点击区域扩大,不影响图片尺寸

          本文链接:https://www.haomeiwen.com/subject/ekzeeftx.html