文档章节

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

iShown
 iShown
发布于 2016/02/05 12:24
字数 523
阅读 1703
收藏 2

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

最简单易行的是自己动手做一个标志

BOOL isShow;

然后在添加到superView时候,isShow = YES

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

遍历所有子视图进行操作,这样可以同时对多个子视图进行操做,移除视图释放内存等

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

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

某些情况下,需判断当前ViewController是否正在显示,比如后台网络请求报错,我们可能只希望在发起请求的页面弹窗提示用户,当用户已经跳转到其他界面,不做弹窗,减少对用户的干扰。

假如一个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");
    }

© 著作权归作者所有

iShown
粉丝 15
博文 67
码字总数 46936
作品 0
浦东
高级程序员
私信 提问
UIScrollView的属性总结

在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scroll view会暂时拦截触摸事件,使用一个 计时器,假如在计时器到点后,没有发生手指移动事件, 那么,scroll view发送tracking events到被点...

abcMx
2014/03/21
0
0
侧滑菜单(抽屉效果)DrawerLayout实现原理

DrawerLayout是android support包新增的侧滑菜单控件,在Android Studio中可以很方便的创建一个带有侧滑菜单的页面。今天,我们来分析DrawerLayout它的实现原理,来加深对它的了解。为了能让...

Ihesong
2017/10/15
0
0
ViewPager各种骚操作,说不定你可以用上

ViewPager在项目开发的用得很是频繁,在平时的项目中,我也总结了一些产品经理可能要求要的一些关于ViewPager的特殊效果,特在此总结一下,以备以后的不时之需。 github代码直通车 1. 3D画廊...

奔跑吧焦宇
03/23
0
0
UIScrollView 类常用属性方法

一、创建 [java] view plaincopy CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 当你创建......

carsonwyzc
2015/02/02
2.6K
2
网上总结 loadView 和 viewDidLoad

iPhone开发必不可少的要用到这两个方法。 他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢? viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。viewDid...

张志浩
2012/12/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
12分钟前
0
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
20分钟前
2
0
聊聊Elasticsearch的OsProbe

序 本文主要研究一下Elasticsearch的OsProbe OsProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/os/OsProbe.java public class OsProbe { private static f......

go4it
20分钟前
0
0
谈谈lucene的DocValues特性之NumericDocValuesField

在默认实现的DocValuesCosumer中,数值有可能分块存储也有可能放在一个数据块中存储。 分块的大小默认是16384,并且通过预先计算如果按一个块存储最大值与最小值的差所占用的比特数和分块存储...

FAT_mt
38分钟前
0
0
【BATJ】面试必问MySQL索引实现原理

BATJ面试题剖析 1、为什么需要使用索引? 2、数据结构Hash、平衡二叉树、B树、B+树区别? 3、机械硬盘、固态硬盘区别? 4、Myisam与Innodb B+树的区别? 5、MySQL中的索引什么数据结构? 6、...

须臾之余
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部