iOS UIButton之改变有效点击区域

  • 解决方案
    通过重写- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
    以改变按钮的有效点击区域
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    if (_qi_clickAreaReduceValue > 0) {
    if (_qi_clickAreaReduceValue >= CGRectGetWidth(self.bounds)/2) {
    _qi_clickAreaReduceValue = CGRectGetWidth(self.bounds)/2;
    }
    CGRect bounds = CGRectInset(self.bounds, _qi_clickAreaReduceValue, _qi_clickAreaReduceValue);
    return CGRectContainsPoint(bounds, point);
    }

    // 获取bounds 实际大小
    CGRect bounds = self.bounds;
    // 若热区小于 44 * 44 则放大热区 否则保持原大小不变
    CGFloat widthDelta = MAX(44.f - bounds.size.width, 0.f);
    CGFloat heightDelta = MAX(44.f - bounds.size.height, 0.f);
    // 扩大bounds
    bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
    // 点击的点在新的bounds 中 就会返回YES
    return CGRectContainsPoint(bounds, point);
    }
-------------本文结束感谢您的阅读-------------
最近的文章

iOS copy相关

strong和copy的区别当我们用@property来声明属性变量时,编译器会自动为我们生成一个以下划线加属性名命名的实例变量(@synthesize copyyStr = _copyyStr),并且生成其对应的getter、setter方法。当我们用self.copyyStr = origin …

继续阅读
更早的文章

iOS OTA无线分发安装App内测下载

搭建步骤 应用.ipa文件,可以是企业级签名,也可以是dev签名包 manifest.plist文件,plist文件和ipa文件必须放在支持https://服务器上,而且必须是公网ssl,自签名及免费的https不可用(本文以GitHub为例) 下载应用的html页面 manifest.pl …

继续阅读