iOS判断UIView是否显示在屏幕上
来源:互联网 发布:windows默认字体包 编辑:程序博客网 时间:2024/05/16 11:45
转载 请注明出处:ALDRIDGE1的专栏
头文件:
/***************************************************** * MIT Licence * * Author: __承_影__ * * Date: 2015.2.10 * ****************************************************/@interface UIView (UIScreenDisplaying)// 判断View是否显示在屏幕上- (BOOL)isDisplayedInScreen;@end
实现文件
/***************************************************** * MIT Licence * * Author: __承_影__ * * Date: 2015.2.10 * ****************************************************/@implementation UIView (UIScreenDisplaying)// 判断View是否显示在屏幕上- (BOOL)isDisplayedInScreen{ if (self == nil) { return FALSE; } CGRect screenRect = [UIScreen mainScreen].bounds; // 转换view对应window的Rect CGRect rect = [self convertRect:self.frame fromView:nil]; if (CGRectIsEmpty(rect) || CGRectIsNull(rect)) { return FALSE; } // 若view 隐藏 if (self.hidden) { return FALSE; } // 若没有superview if (self.superview == nil) { return FALSE; } // 若size为CGrectZero if (CGSizeEqualToSize(rect.size, CGSizeZero)) { return FALSE; } // 获取 该view与window 交叉的 Rect CGRect intersectionRect = CGRectIntersection(rect, screenRect); if (CGRectIsEmpty(intersectionRect) || CGRectIsNull(intersectionRect)) { return FALSE; } return TRUE;}
测试用例:
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; // 无父视图 BOOL b1 = [v isDisplayedInScreen]; NSLog(@"b1: %d", b1); // [self.view addSubview:v]; BOOL b2 = [v isDisplayedInScreen]; NSLog(@"b2: %d", b2); v.frame = CGRectZero; BOOL b3 = [v isDisplayedInScreen]; NSLog(@"b3: %d", b3); CGRect screenRect = [UIScreen mainScreen].bounds; CGFloat screenWidth = screenRect.size.width; CGFloat screenHeight = screenRect.size.height; v.frame = CGRectMake(-screenWidth, -screenHeight, screenWidth, screenHeight); BOOL b4 = [v isDisplayedInScreen]; NSLog(@"b4: %d", b4);
1 0
- iOS判断UIView是否显示在屏幕上
- iOS判断UIView是否显示在屏幕上
- iOS : 判断两个控件是否重合.(可用于判断某一个控件是否显示在window上)
- 判断View是否显示在界面上
- 判断view 是否显示在scrollview 上
- iOS判断当前控制器是否在显示
- JS判断div是否在屏幕显示范围内,是否滚出屏幕显示范围
- 判断控件是否在屏幕的显示范围内
- iOS 判断屏幕是否锁屏
- 如何判断ios设备是否是高清屏幕
- iOS 判断屏幕是否锁屏
- 在任意UIView上显示Badge
- 在任意UIView上显示Badge
- UIMenuController 在UIView 上的 显示
- 在屏幕上显示时间
- UIView 判断是否visible
- 判断一个div是否在屏幕外
- 判断元素是否在屏幕中
- view.findViewById 和Activity.findViewById区别
- 工作杂谈:春节后的第一天班
- ODPS技术架构及应用实践
- c++ 泛型编程 之 自动生成代码
- 懒加载异常的解决办法
- iOS判断UIView是否显示在屏幕上
- 一个信号量与定时器的例子(Golang)
- webUI——jBox快速入门
- html+css实现3D旋转图片展示
- Android自定义ListView实现上滑分页
- 【基础篇系列5】java核心(二)
- C#中的委托和事件
- C Language Study - a dangerous function - getchar()
- HDU 2829 Lawrence 斜率优化DP