美文网首页iOS Developer
iOS UIScrollView遍历subviews问题

iOS UIScrollView遍历subviews问题

作者: FTC陳 | 来源:发表于2016-11-16 18:22 被阅读255次
    当用storyBoard拖一个UIScrollView,遍历子视图时获取子视图数量时,因为UIScrollView上有两个滑动条,而滑动条以ImageView的形式添加到父视图上,遍历时应该注意这个问题.

    </br>

    xcode8环境下:

    storyBoard拖一个ScrollView,ScrollView上未填加任何子视图下,ViewDidLoad中打印:

    Paste_Image.png

    在storyBoard水平与竖直滑动条同时勾选的情况下,打印结果中发现:未在ScrollView上添加任何子视图时,其上有两个UIImageView.

    ScrollView的subViews:(
    "<UIImageView: 0x109d091f0; frame = (365 29.5; 7 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x170030fc0>>",
    "<UIImageView: 0x109d157f0; frame = (369.5 25; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x17002c5c0>>")
    
    在去掉storyBoard一个勾选(取消水平滑动条)时:
    Paste_Image.png

    在storyBoard去掉水平滑动条时,打印结果中发现:未在ScrollView上添加任何子视图时,其上有一个UIImageView.

    ScrollView的subViews:(
    "<UIImageView: 0x7fe76ff0f2b0; frame = (234.5 118; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x608000223ae0>>")
    

    storyBoard中水平与竖直的滑动条勾选全部去掉时,打印结果为空:

    ScrollView的subViews:( )
    
    在storyBoard同时勾选时,却在代码中进行了操作,也会产生同样的效果
    self.testScrollView.showsHorizontalScrollIndicator = NO;
    
    //打印结果
     ScrollView的subViews:(
    "<UIImageView: 0x7fa2d7e07340; frame = (234.5 118; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x600000036120>>")
    

    因而在处理子视图数量时,一定要注意是否对ScrollView的滑动条进行了操作,否则会造成计算数量时产生偏差等问题

    在做处理时,要么注意好子视图的数量,要么增加类型判断:

    for (UIView *view in self.testScrollView.subviews) {
        
        if ([view isKindOfClass:NSClassFromString(@"UIImageView")]) {
               
        }
    }
    

    以上就是UIScrollView遍历子视图的一些问题,有任何问题的话请私信或者留言.

    </br>

    相关文章

      网友评论

        本文标题:iOS UIScrollView遍历subviews问题

        本文链接:https://www.haomeiwen.com/subject/abxoettx.html