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