美文网首页
CGRect相关(未完待续...)

CGRect相关(未完待续...)

作者: 宇文袥 | 来源:发表于2019-01-31 16:37 被阅读8次

    1、CGRectInset
    CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy)是以rect为中心,根据dx和dy来实现缩小。
    可以理解为,高度和宽度相对于view1分别缩小20像素。正值表示缩小,负值表示扩大。
    2.CGRectOffset
    CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy)
    它是以rect左上角为基点,向X轴和Y轴偏移dx和dy像素。
    3.CGRectContainsRect
    CGRectContainsRect(CGRect rect1, CGRect rect2)
    判断两个结构体是否有交错

    1. CGRectContainsPoint
      CGRectContainsRect(CGRect rect, CGPoint point)
      判断一个点是否包含在矩形中,所以参数为一个点一个矩形
      其中 CGSize和CGPoint的比较方法如出一辙

    演练:增加按钮响应区域

    -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
        if (!self.isUserInteractionEnabled || self.hidden || self.alpha<=0.01) {
            return nil;
        }
        CGRect touchRect = CGRectInset(self.bounds, -20, -20);
        if (CGRectContainsPoint(touchRect, point)) {
            for (UIView *subView in [self.subviews reverseObjectEnumerator]) {
                CGPoint convertedPoint = [subView convertPoint:point toView:self];
                UIView *hitTestView = [subView hitTest:convertedPoint withEvent:event];
                if (hitTestView) {
                    return hitTestView;
                }
            }
            return self;
        }
        return nil;
    }
    

    UIKit提供了一下几种坐标转换的方法:

    • (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;
    • (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;
    • (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
    • (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

    相关文章

      网友评论

          本文标题:CGRect相关(未完待续...)

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