判断View是否显示在屏幕上

新建UIView的分类

1.声明方法:


/** 该方法用于判断当前视图是否显示在Window上*/

  • (BOOL)isShowingOnKeyWindow;

2.实现方法

/**
  • 该方法用于判断当前视图是否显示在Window上
  • @return YES表示在,NO表示不在
    */
  • (BOOL)isShowingOnKeyWindow
    {
    // 主窗口
    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;

    // 以主窗口左上角为坐标原点, 计算self的矩形框
    CGRect newFrame = [keyWindow convertRect:self.frame fromView:self.superview];
    CGRect winBounds = keyWindow.bounds;

    // 主窗口的bounds 和 self的矩形框 是否有重叠
    BOOL intersects = CGRectIntersectsRect(newFrame, winBounds);

    return !self.isHidden && self.alpha > 0.01 && self.window == keyWindow && intersects;
    }


3.使用方法

[self.view isShowingOnKeyWindow]
//或者
self.view.isShowingOnKeyWindow

你可能感兴趣的:(判断View是否显示在屏幕上)