判断View是否正在显示的总结

有时候在作一些工程时候为了视觉美化须要将一些view隐藏显示,还有的状况须要看是否是正在显示,这篇博文就简单总结一下怎么处理html

最简单易行的是本身动手作一个标志

BOOL isShow;网络

而后在添加到superView时候,isShow = YESless

从父视图移除时候,isShow = NO测试

遍历全部子视图进行操做,这样能够同时对多个子视图进行操作,移除视图释放内存等

for(UIView * view in [self.view subviews]){
        if(View isKindOfCless:[OneViewObject class]){
            //...spa

ps :IOS  判断当前UIViewController 是否正在显示

某些状况下,需判断当前ViewController是否正在显示,好比后台网络请求报错,咱们可能只但愿在发起请求的页面弹窗提示用户,当用户已经跳转到其余界面,不作弹窗,减小对用户的干扰。htm

假如一个UIView对象当前正在显示,那么它的window属性确定为非空值。虽然官方文档未说明UIView未显示时window属性的取值, 可是通过简单的测试,大部分状况下UIView未显示时,window的值为空,所以依据此判断当前UIViewController是否正在显示。可是 访问UIViewController的view属性时,可能会引发view加载(假如此时还未加载),这是没必要要的,并且还可能引发没法预期的问题。因 此在访问view属性以前,最好先检查isViewLoaded属性来避免上述问题。
- (BOOL)isVisible {
    return (self.isViewLoaded && self.view.window);
}对象

同时引用另一位博友的处理方式内存

iOS判断UIView是否显示在屏幕上

如何判断一个view 是否在另一个view 范围内

其原理是将两个view的坐标convert 到相对于同一个view的坐标,再对比文档

贴一段代码吧:
    CGRect rect = [_testButton convertRect:_testButton.frame toView:self.view];
    if (CGRectIntersectsRect(self.view.frame, rect)) {
        NSLog(@"true");
    }else{
        NSLog(@"false");
    }get

相关文章
相关标签/搜索