当用storyBoard拖一个UIScrollView,遍历子视图时获取子视图数量时,因为UIScrollView上有两个滑动条,而滑动条以ImageView的形式添加到父视图上,遍历时应该注意这个问题.
</br>
xcode8环境下:
Paste_Image.pngstoryBoard拖一个ScrollView,ScrollView上未填加任何子视图下,ViewDidLoad中打印:
在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>
网友评论