美文网首页
iOS 扩大 UIButton 的点击范围

iOS 扩大 UIButton 的点击范围

作者: CoderGuogt | 来源:发表于2019-09-27 00:57 被阅读0次

    在实际开发中,有的时候 Button 因为 Frame 太小,导致点击范围也小,需要增大 Button 的点击范围,但是又不需要改变 ButtonFrame
    在 UIView 中有一个方法

     // default returns YES if point is in bounds
    - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;  
    

    这个方法,当点击范围在这个view中,返回YES, 否则返回 NO

    可以新建一个分类,新增加一个属性,记录需要扩大范围大小

    @property (nonatomic, assign) CGFloat expandSize; /**< 需要扩大的范围大小 */
    

    .m 文件的实现增加以下方法

    - (void)setExpandSize:(CGFloat)expandSize {
        
        objc_setAssociatedObject(self, @selector(setExpandSize:), @(expandSize), OBJC_ASSOCIATION_ASSIGN);
    }
    
    - (CGFloat)expandSize {
        
        return [objc_getAssociatedObject(self, @selector(setExpandSize:)) floatValue];
    }
    
    - (CGRect)expandRect {
        
        return CGRectMake(self.bounds.origin.x - self.expandSize,
                          self.bounds.origin.y - self.expandSize,
                          self.bounds.size.width + 2 * self.expandSize,
                          self.bounds.size.height + 2 * self.expandSize);
    }
    
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
        
        CGRect buttonRect = [self expandRect];
        
        if (CGRectEqualToRect(buttonRect, self.bounds)) {
            return [super pointInside:point
                            withEvent:event];
        }
        
        return  CGRectContainsPoint(buttonRect, point);
    }
    

    这样就在不改变 ButtonFrame 前提下,扩大了 Button 的点击范围。

    相关文章

      网友评论

          本文标题:iOS 扩大 UIButton 的点击范围

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