判断View是否显示在屏幕上

新建UIView的分类

1.声明方法:
<pre>
/** 该方法用于判断当前视图是否显示在Window上*/

  • (BOOL)isShowingOnKeyWindow;
    </pre>
    2.实现方法
    <pre>
    /**
  • 该方法用于判断当前视图是否显示在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;
    }
    </pre>
    3.使用方法
    <pre>

[self.view isShowingOnKeyWindow]
//或者
self.view.isShowingOnKeyWindow
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,387评论 30 472
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 5,229评论 0 3
  • 每个人都期盼着,期盼着改变,但是, 改变生活是很难的,而我们面对那些艰难时刻的选择,会在无形中影响我们的一...
    By于你与你阅读 1,521评论 0 0
  • 老妈,50多岁。 有亲戚在广州那边,她去广州走亲戚,我给她买了张高铁票,但她没有去过广州南站,我怕她不会换乘轻轨,...
    安儿CC阅读 1,449评论 0 2
  • 一、乐百氏企业简介 乐百氏集团前身为广东今日集团,创办于1989年,今日集团正式成立于1992年10月。1999年...
    63f43a1d65f3阅读 5,108评论 0 3