- (BOOL)isDisplayedInScreen:(UIView *)view{
// view不存在 或未添加到superview
if (view == nil || view.superview == nil) {
return FALSE;
}
// view 隱藏
if (view.hidden) {
return FALSE;
}
// 轉換view對應window的Rect
CGRect rect = [view convertRect:view.frame toView:nil];
//若是能夠滾動,清除偏移量
if ([[view class] isSubclassOfClass:[UIScrollView class]]) {
UIScrollView * scorll = (UIScrollView *)view;
rect.origin.x += scorll.contentOffset.x;
rect.origin.y += scorll.contentOffset.y;
}
// 若size爲CGrectZero
if (CGRectIsEmpty(rect) ||
CGRectIsNull(rect) ||
CGSizeEqualToSize(rect.size, CGSizeZero)) {
return FALSE;
}
// 獲取 該view與window 交叉的 Rect
CGRect screenRect = [UIScreen mainScreen].bounds;
CGRect intersectionRect = CGRectIntersection(rect, screenRect);
if (CGRectIsEmpty(intersectionRect) || CGRectIsNull(intersectionRect)) {
return FALSE;
}
return TRUE;
}
複製代碼