美文网首页
判断一个控件是否真正显示在主窗口

判断一个控件是否真正显示在主窗口

作者: ios_stand | 来源:发表于2017-03-28 14:50 被阅读0次

UIView添加一个分类。

#import <UIKit/UIKit.h>

@interface UIView (SWLExtension)

/**
 * 判断一个控件是否真正显示在主窗口
 */
- (BOOL)isShowingOnKeyWindow;

@end

- (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;
}

相关文章

网友评论

      本文标题:判断一个控件是否真正显示在主窗口

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