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,即可印证该结论。

  • 相关阅读:
    安卓打包名称
    安卓判断麦克风权限
    Redis基础了解
    Redis的安装
    SVN的日常使用和安装
    Maven基础2
    Maven基础1
    ResultSet的Type
    Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html
    Spring配置事务 http://www.cnblogs.com/leiOOlei/p/3725911.html
  • 原文地址:https://www.cnblogs.com/Apologize/p/6097035.html
Copyright © 2011-2022 走看看