1.UIView的子視圖沒有嵌套的情況
for (UIView *subView in self.view.subviews) {
NSLog(@"%@",subView);
}
或者
for (int i=0; self.view.subviews.count; i++) {
NSLog(@"%@",self.view.subviews[i]);
}
2.UIView的子視圖有嵌套的情況
例如圖中父視圖的view1和view2子視圖中均嵌套了子視圖,這種情況下父視圖的subviews數組的本來只應該包括view1和view2視圖,但是發現父視圖的subviews數組的count屬性卻是5,即subviews數組的大小爲5,也就是計數的時候默認包含了所有的子視圖。驗證後發現subviews數組前兩個對象爲view1和view2視圖,其餘3個對象均爲空視圖,而不是其餘的view3、view4和view5子視圖(很奇怪~)。這種情況下應該使用遞歸來遍歷父視圖的所有子視圖。
[self TraverseAllSubviews:self.view];
//遍歷父視圖的所有子視圖,包括嵌套的子視圖
-(void)TraverseAllSubviews:(UIView *)view {
for (UIView *subView in view.subviews) {
if (subView.subviews.count) {
[self TraverseAllSubviews:subView];
}
NSLog(@"%@",subView);
}
}