遍歷UIView的所有子視圖

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);
            }
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章