• iOS 按钮点击区域修改 button部分区域可以点击 修改点击区域


    比如

    一个按钮,只让中间点击区域点击有效,其他地方点击无效,重写UIButton的两个方法

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;

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

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
        if (self.hidden ||
            self.alpha < 0.01 ||
            self.userInteractionEnabled  == NO) {
            return nil;
        }
        
        if ([self pointInside:point withEvent:event]) {
            
            __block UIView * hit = nil;
            
            [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                
                //把点击的点转为子视图的坐标点
                CGPoint subConv = [self convertPoint:point toView:obj];
                
                hit = [self hitTest:subConv withEvent:event];
                
                if (hit) {
                     *stop = YES;
                }
               
            }];
            
            return hit != nil ? hit : self ;
            
        } else {
            return nil;
        }
    }
    
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
        CGFloat clickX = point.x;
        CGFloat clickY = point.y;
        
        CGFloat centerX = self.frame.size.width / 2.0;
        CGFloat centerY = self.frame.size.height / 2.0;
        
        //直角三角形求斜角长度
        CGFloat distance = sqrt((centerX - clickX) * (centerX - clickX) + (centerY - clickY) * (centerY - clickY));
        
        if (distance < self.frame.size.width / 2) {
            return YES;
        } else {
            return NO;
        }
        
    }
  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/huangzhenwei/p/13545149.html
Copyright © 2020-2023  润新知