判断一个View是否显示在屏幕上

CGgemetry文件提供了
CGRectContainsRect(CGRect rect1, CGRect rect2) 来判断rect1 是否包含了rect2
CGRectIntersectsRect(CGRect rect1, CGRect rect2) 来判断 rect1 与rect2 是否重叠
CGRectContainsPoint(CGRect rect, CGPoint point) 来判断 点point 是否在rect 里面

判断的前提: 两个rect必须是在同一个坐标系下;得出的结果才是正确的.
一般先把frame 转换到keywindow坐标系下,在进行判断.
坐标系转换:

- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
将blueView的某块区域(这里是本身的bounds),转换到 keyWindow的坐标系下(nil 默认表示keyWindow)
CGRect rect1 = [self.blueView convertRect:self.blueView.bounds toView:nil];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容