首页 > 其他分享 >UIView的层次结构--code

UIView的层次结构--code

时间:2023-05-23 12:00:47浏览次数:50  
标签:-------- code -- UIImageView outstring ------ view UIView

[self  logViewTreeForMainWindow];

// Recursively travel down the view tree, increasing the indentation level for children
- (void)dumpView:(UIView *)aView atIndent:(int)indent into:(NSMutableString *)outstring
{
    for (int i = 0; i < indent; i++) [outstring  appendString:@"--"];
    [outstring appendFormat:@"[%2d] %@\n", indent, [[aView class] description]];
    for (UIView *view in [aView subviews])
        [self dumpView:view atIndent:indent + 1 into:outstring];
}

// Start the tree recursion at level 0 with the root view
- (NSString *) displayViews: (UIView *) aView
{
    
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    
    NSMutableString *outstring = [[NSMutableString alloc] init];
    [self dumpView: window atIndent:0 into:outstring];
    return outstring;
}
// Show the tree
- (void)logViewTreeForMainWindow
{
    //  CFShow([self displayViews: self.window]);
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    NSLog(@"The view tree:\n%@", [self displayViews:window]);
}
具体用法就是在你想知道你的view的层次的时候,调用一下这个logViewTreeForMainWindow函数就可以了。

比方说:下面这个就是我的打印结果。非常清晰明了!

 [ 0] UIWindow
 --[ 1] UILayoutContainerView
 ----[ 2] UINavigationTransitionView
 ------[ 3] UIViewControllerWrapperView
--------[ 4] UIView                 -----rootViewController
 ----------[ 5] UITableView
 ------------[ 6] ServerViewCell_iphone
 --------------[ 7] UITableViewCellContentView
 ------------[ 6] ServerViewCell_iphone
 --------------[ 7] UITableViewCellContentView
 ----[ 2] UINavigationBar
 ------[ 3] UINavigationBarBackground
 ------[ 3] UILabel
 ------[ 3] UIButton
 --------[ 4] UIImageView
 --------[ 4] UIImageView
 --[ 1] UIView                  ----backView
 --[ 1] UITransitionView
 ----[ 2] UIView                ----CameraPlayerView.
 ------[ 3] UIView              for zoom.--frameView.
 --------[ 4] UIImageView
 ------[ 3] UIImageView
 ------[ 3] UILabel
 --------[ 4] UIImageView
 ------[ 3] UIImageView
 ------[ 3] UINavigationBar
 --------[ 4] UINavigationBarBackground
 --------[ 4] UINavigationItemView
 
 ----[ 2] UILayoutContainerView
 ------[ 3] UINavigationTransitionView   -----recordVideoView
 --------[ 4] UIViewControllerWrapperView
 ----------[ 5] UIView
 ------------[ 6] UITableView
 --------------[ 7] UIImageView
 --------------[ 7] UIImageView
 ------------[ 6] UIToolbar
 --------------[ 7] _UIToolbarBackground
 --------------[ 7] UISegmentedControl
 ------[ 3] UINavigationBar
 --------[ 4] UINavigationBarBackground
 --------[ 4] UILabel
 --------[ 4] UIButton
 ----------[ 5] UIImageView
 ----------[ 5] UIButtonLabel

标签:--------,code,--,UIImageView,outstring,------,view,UIView
From: https://blog.51cto.com/u_16124099/6330596

相关文章

  • 2023 ACP世界大赛中国总决赛:让世界再多一个微笑
    “夺最高的冠,摘最亮的星!”2023ACP世界大赛中国总决赛(AdobeCertifiedProfessional世界大赛中国总决赛)于5月13日-5月14日在苏州西交利物浦大学举办,历时2天的精彩角逐,圆满收官!此次2023ACP世界大赛中国区总决赛历经2个多月的激烈竞争,经过层层筛选,聚集了来自27个省份,68个城市的晋级选......
  • UE4 UCLASS(...)
    类说明符UCLASS和元数据(meta)可以定义引擎和编辑器特定的行为。类声明的语法如下所示:UCLASS([specifier,specifier,...],[meta(key=value,key=value,...)])classClassName:publicParentName{GENERATED_BODY()}声明包含一个类的标准C++类声明。在标准声......
  • 小工具
    1音频和视频处理类(1)Shotcut简介:视频处理软件,跨平台,开源,没有水印,下载地址如下https://www.shotcut.org/download/https://github.com/mltframework/shotcut/releases (2)gimp简介:处理图片,跨平台,开源,大部分功能与PS类似#最新版https://www.gimp.org/downloads/#各个......
  • linux 格式化磁盘为xfs格式 chatgpt问答
    问:linux格式化磁盘为xfs格式答:要将磁盘格式化为XFS格式,可以按照以下步骤进行操作:确保已连接要格式化的磁盘,并获取磁盘的设备名称(例如,/dev/sdb)。在终端中以管理员权限登录到Linux系统。运行以下命令来安装XFS工具(如果尚未安装):sqlCopycodesudoaptupdatesu......
  • Bellman-Ford 单源最短路
    单源最短路,顾名思义,就是从一个起点到其余点的最短距离Bellman-Ford算法的思路是进行至多n-1轮的更新,每次遍历所有的边,进行松弛操作d[v]=min(d[v],d[u]+w);Bellman-Ford算法可以处理有负边权的图,也可以判负环,只要在第n轮还能进行松弛操作,说明存在负环例题洛谷P3371【模板】单......
  • JPEG编码协议--代码实现
      通过前面几篇的JPEG编码原理和文件格式解析,此篇通过简单的sample代码来具体介绍下JPG有损编码的简单实现,具体的说明见代码注释,改bmp2jpg.c实现了BMP图片到JPG图片的格式转换,使用gcc./bmp2jpg.c-std=c99-lm编译,执行。1#include<stdint.h>2#include<stdlib.h>......
  • quartz定时任务时间设置
    每天凌晨2点002**?和每天隔一小时0**/1**?例1:每隔5秒执行一次:*/5****?例2:每隔5分执行一次:0*/5***?在26分、29分、33分执行一次:026,29,33***?例3:每天半夜12点30分执行一次:0300**?(注意日期域为0不是24)每天凌晨1点执行一次:001**?......
  • 18-关键字高亮
    高亮原理我们在百度,京东搜索时,关键字会变成红色,比较醒目,这叫高亮显示:高亮显示的实现分为两步:1)给文档中的所有关键字都添加一个标签,例如<em>标签2)页面给<em>标签编写CSS样式实现高亮语法注意高亮是对关键字高亮,因此搜索条件必须带有关键字,而不能是范围这样的查询。......
  • linux 一块空磁盘初始化为dos的磁盘分区表,然后可以直接初始化整个磁盘为ext4格式,也可
    问:linux一块空磁盘初始化为dos的磁盘分区表,然后可以直接初始化整个磁盘为ext4格式,也可以先把磁盘分出一个Partition再初始化为ext4格式,这两种方式有什么区别,有什么特点答:在Linux上,对一块空磁盘进行初始化为ext4文件系统时,你可以选择两种不同的方式:直接初始化整个磁盘为......
  • 启发式算法在三维装箱问题上的应用
    启发式算法的出现时间比较难以确定,因为很多算法的提出都是在不同的领域和不同的时间段内,而且随着时间的推移,这些算法也在不断地完善和发展。以下是一些比较有代表性的启发式算法及其出现时间:1953年,模拟退火算法(SimulatedAnnealing,SA)模拟退火算法是一种基于固体物理学中固体退火......