遍历子视图

在iOS开发中,为了查看视图及子视图的层级结构,可以通过递归遍历和利用`recursiveDescription`方法。递归遍历利用`subviews`属性获取直接子视图,并可扩展遍历所有子视图。而`recursiveDescription`结合`po`命令能打印详细的视图层级关系。
摘要由CSDN通过智能技术生成

        开发过程中,我们经常需要查看一个视图及其子视图的层级关系,这里提供两个方法:

        1)递归遍历

        对于一个视图rootview,我们可以通过UIView的方法subviews获取到它的直接子视图,

        这里有一点需要注意,[rootview subviews]返回的子视图数组是rootview的直接子视图,即数组里面每个视图在视图层级树中与rootview有直接的父子关系,且子视图数组里面并不包含rootview本身(注意和数学中集合的子集进行区别),数组中的顺序从小到大对应视图层级的从底部(bottom)到顶端(top)

        基于以上说明,我们可以利用递归的思想遍历获取rootview的所有直接和非直接的子视图

/**
 *	@brief	递归遍历
 *
 *	@param 	rootView 	当前视图节点
 *	@param 	floor 	当前视图节点在视图层级树中的层数索引
 */
- (void)view:(UIView *)rootView floor:(NSInteger)floor
{
    NSLog(@"<%@>-第%i层",[rootView class],floor);
    floor++;
    for (UIView *v in [rootView subviews])
    {
        [self view:v floor:floor];
    }
}

        2)利用recursiveDescription方法

        UIView有一个私用方法recursiveDescription,配合po(print-object)命令可以打印出视图的层级关系

po [rootview recursiveDescription]


       



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值