• 如何增加button的点击范围


    写一个UIButton的分类

    #import <UIKit/UIKit.h>

     

    @interface UIButton (EnlargeEdge)

    - (void)setEnlargeEdge:(CGFloat) size;

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

    @end

    --------------下面是.m文件-------------------------

     #import <objc/runtime.h>

    #import "UIButton+EnlargeEdge.h"

     

    @implementation UIButton (EnlargeEdge)

    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;

    }

     

    /*

     - (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

     

     

    使用:  

    [self.ViewButton setEnlargeEdgeWithTop:0 right:50 bottom:50 left:50];

     

  • 相关阅读:
    CentOS/RedHat安装Python3
    Hash校验工具、MD5 SHA1 SHA256命令行工具
    centos如何安装Python3
    iOS之UI--涂鸦画板实例
    iOS之UI--Quartz2D的入门应用-- 重绘下载圆形进度条
    Eclipse导入项目: No projects are found to import
    在MAC平台下使用Eclipse出现了中文乱码
    C语言错误之--初始值(低级错误)
    iOS开发之duplicate symbols for architecture x86_64错误
    C语言的传值与传址调用
  • 原文地址:https://www.cnblogs.com/dashengios/p/10513285.html
Copyright © 2020-2023  润新知