zoukankan      html  css  js  c++  java
  • iOS修改button的点击范围

    一般来说,按钮的点击范围是跟按钮的大小一样的。若按钮很小时,想增大点击区域,网上通用的方法有
    ①设置btn图片setImage,然后将btn的size设置的比图片大
    ②在btn上添加一个比较大的透明btn
    但以上有问题,若btn无图片就无法设置;添加透明btn则会改变view的层级。所以此时最好的方法是重写btn的

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

    方法。例如:

    -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
        //当前btn大小
        CGRect btnBounds = self.bounds;
        //扩大点击区域,想缩小就将-10设为正值
        btnBounds = CGRectInset(btnBounds, -10, -10);
        
        //若点击的点在新的bounds里,就返回YES
        return CGRectContainsPoint(btnBounds, point);
    }

    对CGRectInset的解释
    CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)作用是将rect坐标按照(dx,dy)进行平移,对size进行如下变换
    新宽度 = 原宽度 - 2*dx;新高度 = 原高度 - 2*dy
    即dx,dy为正,则为缩小点击范围;dx,dy为负的话,则为扩大范围

    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
    [self.view addSubview:view1];
    
    CGRect rect2 = CGRectInset(view1.frame, 10, 20);
    UIView *view2 = [[UIView alloc]initWithFrame:rect2];
    [self.view addSubview:view2];
    NSLog(@"%@",NSStringFromCGRect(rect2));

    结果为

    //{{110, 120}, {180, 160}}

    比较这两个view的frame,即可印证该结论。

  • 相关阅读:
    使用__autoload()来管理文件导入
    PHP 类中的常量
    PHP 访问类中的静态属性
    PHP 中的静态变量的简单使用
    Vscode下Python的用户界面介绍
    VsCode下代码导航
    在VS代码中编辑Python
    vscode下Python设置参考
    在VS Code中对Python进行单元测试
    解决html5中video标签无法播放mp4问题的办法
  • 原文地址:https://www.cnblogs.com/Apologize/p/6097035.html
Copyright © 2011-2022 走看看