iOS判断UIView是否显示在屏幕上
2017-11-09 15:59
3075 查看
@interface
- (BOOL)isDisplayedInScreen;
@end
@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;
}
retrun true;
}
@end
//test case
UIView *view = [UIView alloc] initWithFrame:CGRectMake(0,0,40,40)];
//无父视图
BOOL b1 = [view isDisplayedInScreen];
NSLog(@"b1: %d", b1);
[self.view addSubView:view];
BOOL b2 = [view isDisplayedInScreen];
NSLog(@"b2:%d",b2);
v.frame = CGRectZero;
BOOL b3 = [view isDisplayedSceen];
NSLog("b3:%d",b3);
CGRect screenRect = [UIScreen mainScreen].bounds;
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
view.frame = CGRectMake(-screenWidth, -screenHeight, screenWidth, screenHeight);
BOOL b4 = [view isDisplayedInscreen];
NSLog(@"b4:%d",b4);
- (BOOL)isDisplayedInScreen;
@end
@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;
}
retrun true;
}
@end
//test case
UIView *view = [UIView alloc] initWithFrame:CGRectMake(0,0,40,40)];
//无父视图
BOOL b1 = [view isDisplayedInScreen];
NSLog(@"b1: %d", b1);
[self.view addSubView:view];
BOOL b2 = [view isDisplayedInScreen];
NSLog(@"b2:%d",b2);
v.frame = CGRectZero;
BOOL b3 = [view isDisplayedSceen];
NSLog("b3:%d",b3);
CGRect screenRect = [UIScreen mainScreen].bounds;
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
view.frame = CGRectMake(-screenWidth, -screenHeight, screenWidth, screenHeight);
BOOL b4 = [view isDisplayedInscreen];
NSLog(@"b4:%d",b4);
相关文章推荐
- iOS判断UIView是否显示在屏幕上
- iOS判断UIView是否显示在屏幕上
- ios APP初次安装以及版本更新后,判断是否需要显示引导页
- Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
- IOS 判断当前UIViewController 是否正在显示
- ios 如何判断键盘是否已经显示
- iOS device is locked/unlocked (判断手机屏幕是否锁屏)
- iOS 判断 UITableViewCell 和 UICollectionViewCell 是否移出屏幕
- iOS开发小技巧--判断控件是否显示在当前窗口
- IOS根据屏幕尺寸判断是否为iphone6plus尺寸
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
- JS判断div是否在屏幕显示范围内,是否滚出屏幕显示范围
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- ios中判断一个数是否是整数,是整数那么只显示整数部分。否则显示小数点后面一位
- iOS 判断屏幕是否锁屏
- iOS 判断屏幕是否锁屏
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- iOS 判断 当前ViewController是否正在显示
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键