检查视图
关于视图层次结构调试器
使用视图调试器来检查已暂停的应用程序的视图层次结构。 调试器包含一个接口对象的分层列表,一个带分解3D层级结构的画布,以及一个对象属性和视图大小的检查器。
要打开视图调试器,请单击调试区域顶部的Debug View Hierarchy按钮()。
查看调试器布局
“导航器”区域中的视图层次结构显示了已暂停应用程序中视图控制器,视图和约束的分层列表。在列表中选择一个对象会突出显示画布上的对应对象。您可以使用过滤器栏仅显示与过滤器字符串匹配的视图控制器,视图和约束。
画布显示视图和控制器的3D图形渲染。使用调试器底部的控件显示不同的元信息(如约束),并调整层次结构的显示方式。选择一个SceneKit对象用SceneKit场景编辑器替换画布。
Object inspector()显示所选视图控制器,视图或约束的类,内存地址,属性值和分配堆栈跟踪。
视图调试器大小检查器()显示视图对象的框架和边界矩形,视图位置,约束和自动布局设置。
视图调试器中显示哪些对象?
视图调试器显示了正在运行的应用程序中的视图,视图控制器和约束的快照。这些对象包括系统添加的对象,例如容器视图,间隔视图和隐式约束。
什么是在指示符区域和视图层次结构中带有感叹号()的紫色正方形?
视图调试器检测到不明确的约束时,运行时问题指示器将出现在工具栏的“活动”指示器区域中。该指标也显示在导航区域中具有模糊约束的任何视图旁边。选择含有不明确约束的视图会在问题描述旁边的视图调试器大小检查器中显示指示器。
为什么画布上有这么多的物体?
视图层次结构中的对象可能包含:
用户界面元素,您添加到您的应用程序。您添加的单个用户界面元素可能由系统组成多个视图。
系统添加的视图,如表格视图单元格分隔符或视觉效果视图。
由系统添加的视图控制器。
SpriteKit节点。
检查视图层次结构
使用画布和视图调试器控件查找应用程序用户界面的问题。
更改画布上视图图层之间的空间。
使用视图控件左侧的滑块来调整画布上图层之间的间距。更大的空间可让您更轻松地查找单个视图对象。
在裁剪区域外显示内容。
单击显示剪辑内容按钮((
)以显示视图层次结构,并将每个视图的clipToBounds属性设置为false。这导致显示视图的边界矩形部分或完全位于一个或多个超视图的边界矩形之外。
视图出错位置的最常见原因是将代码中的框架设置为不正确的值或模糊,缺失,冲突或不正确的约束。
查看所选视图的约束条件
单击显示约束按钮(
)显示所选视图的约束。视图调试器更改为仅显示轮廓,并使任何不属于任何显示的约束的视图变暗。某些类型的约束将附加信息显示为约束中心的徽章。例如,宽高比约束显示宽高比。
在2D和3D之间切换画布
单击Orient to 2D / 3D按钮(
/
)在三维方向之间切换。
查看线框或内容
点击调整视图模式按钮,从弹出菜单中选择视图模式。
选择内容((
)来显示视图的内容。
选择线框(
)仅显示视图对象的线框。
选择内容和线框(
)以显示所有视图对象的视图内容和线框。
更改可见视图对象的范围
使用右下角的双端滑块更改可见视图对象的范围。
移动左手柄以更改最底部的可见视图对象。
移动右手柄来改变最顶端的可见视图对象。
过滤视图层次结构
使用“调试”导航器底部的筛选条来筛选导航器中显示的对象,并显示隐藏的视图。
过滤导航器中显示的视图对象
在过滤器栏中输入文本以仅显示匹配的视图控制器,视图和约束。
如果在以下位置找到输入的文本,则对象与过滤器匹配:
对象的类名或对象继承层次结构中的任何类的类名。
Debug导航器中显示的文本,包括标签的文本,视图控制器的标题和辅助功能标题。
导航器中对象的内存地址。
显示或隐藏画布和层次结构中的隐藏视图
单击过滤器栏中的“仅显示显示的视图”以在导航器和画布上切换隐藏视图的显示。
当isHidden属性设置为true时,隐藏视图。
关注视图层次结构的一部分
通过减少画布上显示的视图对象的数量可以更轻松地找到问题。 你可以通过两种方式来做到这一点:
选择用于画布上显示的视图层次结构顶部的视图对象。
选择画布上显示的最顶层和最底层的视图对象
设置顶视图对象
按住Control键点按画布上或调试导航器中所需的对象。
在出现的弹出式菜单中选择“聚焦”。
画布更新以仅显示所选视图及其后代。
还原完整的视图层次结构
要显示完整的视图层次结构,请在调试导航器中单击Unfocus按钮(X)。 或者,在显示的视图之外的画布上双击
设置最顶层和最底层的视图对象
使用视图调试器控件右侧的滑块来更改画布上显示的视图对象的范围。
移动滑块左侧的拇指以更改最底部的视图。
移动滑块右侧的拇指以更改最顶端的视图。
检查视图控制器,视图或约束
检查视图控制器或视图类的属性
在画布上或在Debug导航器中选择一个视图或视图控制器。
打开对象检查器。
这些属性显示在对象检查器的各个部分中:
目的。类和内存地址。
类属性。所选视图对象的继承层次结构中每个类的属性的一部分。例如,UIImageView包含一个标题为Image的图像视图的属性和一个标题为View的UIView属性的部分。
可访问性。当前的可访问性设置,焦点状态和所选对象的描述。
层次结构。所选对象的继承层次结构。
检查约束的属性
在画布上或在调试导航器中选择一个约束。
打开对象检查器。
这些属性显示在对象检查器的各个部分中:
目的。类和内存地址。
布局约束。属性的值。
层次结构。继承层次结构。
检查视图对象或约束的分配堆栈跟踪
在画布上或Debug导航器中选择视图控制器,视图或约束。
打开对象检查器。
分配堆栈跟踪是检查器中的最后一个部分。
注:要显示回溯,请在方案编辑器的运行时诊断中将malloc的日志记录设置为All Allocation和Free History。
检查视图对象的大小和活动约束
在画布上或Debug导航器中选择一个视图或视图控制器。
打开大小检查器。
信息显示在对象检查器的各个部分中:
视图。 框架和边界矩形,在父级中的位置以及视图的CALayer定位点。
约束。 运行时限制。 添加的隐式约束以灰色显示。
内容优先。 内容拥抱和内容压缩抵抗的运行时优先级。
打开视图对象的源代码
在画布上或Debug导航器中选择一个视图对象。
打开对象检查器。
单击“对象”检查器中任何组中的“类名”条目旁边的“打开源代码”按钮()
源代码文件在主编辑器中打开。 按住Option键的同时在助理编辑器中打开该文件
使用调试仪监视正在运行的应用程序
使用Debug导航器中的调试器来监视正在运行的应用程序,并查找其使用系统资源的异常情况。
观察正在运行的应用程序的调试规格,以熟悉应变计的正常变化和应用程序的标准行为。然后,当您对应用程序进行更改时,请查找调试规格报告中的差异。如果发生问题,请检查最近对代码的更改以诊断它们。每个量表报告都包含一个打开Instruments Instruments的按钮,以便您可以进一步分析正在运行的应用程序
有七种类型的调试量规:CPU,内存,能量,磁盘I / O,网络I / O,GPU和iCloud。但并非所有这些量表都适用于所有类型的应用程序。例如,您必须启用iCloud才能显示iCloud标尺。
在开始之前,构建并运行您的应用程序,调试区域将在主窗口中打开。当您暂停您的应用程序或停在断点处时,调试程序会冻结,以便您可以检查应用程序的最后一个状态。
在导航区域中,单击导航栏中的调试导航按钮()。
如有必要,请单击内容区域中正在运行的应用程序名称旁边的显示调试量表按钮()。
下面的应用程序的调试仪表。
在调试导航器中单击一个量表以查看详细报告。
仪表数据和图表出现在编辑区域。 每种规格的报告都有不同的细节,但都遵循类似的模式。
或者,单击“仪器中的配置文件”,然后在出现的表单中单击“传输”。
控制应用程序转移到仪器,您可以继续分析您的应用程序。
剖析你的应用程序的性能和行为
在乐器中对您的应用进行配置,以检查和优化其行为和性能。
配置分析选项
从工具栏的方案菜单中选择编辑方案。
在左栏中,选择配置文件方案操作。
在右列顶部,点击信息,然后从乐器弹出菜单中选择一个乐器。 要推迟此决定,直到分析您的应用程序,请选择询问启动。
如果需要,请单击参数,并在运行时为您的应用程序指定任何命令行参数或环境变量。 默认情况下,Xcode使用运行方案操作中配置的任何参数。
如果需要,请单击选项并启用可测试性。 对于macOS应用程序,还可以启用持久状态还原,调试时使用文档版本浏览器和自定义工作目录。
点击关闭。
剖析你的应用
选择产品>配置文件。
仪器启动,您可以开始检查您的应用程序。
查看和过滤日志和报告
使用报告导航器浏览Xcode在开发过程中生成的报告和日志,例如任务报告,调试会话日志和机器人报告。 选择一个在编辑器区域打开它。
按计划和机器人分组报告:在报告导航器顶部的排序栏中单击按组。
按时间列出报告:在报告导航器顶部的排序栏中单击按时间。
仅显示最近的报告:单击报告导航器底部的筛选器栏中的最近报告按钮()。
过滤任务报告中的消息:单击过滤器按钮或在编辑器区域顶部的过滤器字段中输入一些文本。 有显示所有或最近的消息,问题和错误的选项。
查看任务报告条目的更多详细信息:单击条目右边缘附近的打开脚本按钮()。 显示所有为该操作执行的活动的日志。 要隐藏脚本,请单击关闭脚本按钮()。
查看有关任务报告错误或警告的更多详细信息:选项 - 单击错误或警告的任务报告条目。 编辑区显示任务的所有细节,并滚动到错误或警告。
在标准编辑器中查看任务报告错误或警告的来源:双击错误或警告的任务报告条目。 标准编辑器打开并滚动到错误或警告。
在助理编辑器中查看任务报告错误或警告的来源:选项 - 双击错误或警告的任务报告条目。 助手编辑器打开并滚动到错误或警告。
查看和解决问题
使用问题导航器显示在打开,分析和构建项目时发现的问题的详细信息。 如果您单击工具栏中的错误或警告图标,问题导航器将自动打开。 否则,要显示问题导航器,请单击主窗口导航区中的问题导航器按钮()
查看构建系统发现的问题:单击Buildtime,下面显示构建时间问题。
查看线程清理程序和调试程序发现的问题:点击Runtime,运行时问题出现在下面。
查看有关问题的详细信息:在列表中,选择问题并在编辑器区域中显示详细信息。
显示与字符串匹配的问题:在过滤条中,在文本字段中输入文本。
显示上次构建的构建问题:单击构建时间,然后在过滤器栏中单击构建图标。
显示构建错误:单击生成时间,然后在筛选栏中单击错误图标。
使用调试符号显示堆栈帧:单击运行系统,然后在筛选栏中单击堆栈图标。
显示和隐藏触摸条模拟器
使用Touch Bar模拟器浮动窗口来查看,测试和调试Touch Bar中的应用程序的NSTouchBar对象。 当您构建并运行您的应用程序时,调试区域会自动打开。
通过选择“窗口”>“显示触摸条”来显示触摸条模拟器。
模拟您正在运行的应用程序的位置
在调试区域中,使用“模拟位置”功能指定“核心位置”框架返回的位置数据。
点击模拟位置按钮,然后选择一个预定义的位置。
选择位置时,Core Location框架类(如CLLocationManager)会在该位置返回数据。
选择添加GPX文件到项目...指定一个GPS交换格式文件,模拟您的应用程序中的位置数据。
GPX文件可能具有可用于模拟一个或多个静态位置或位置随时间变化的航点,航迹和路线。
选择不模拟位置以停止模拟位置,而是使用运行应用程序的设备的位置(如果可用)。
本文暂时没有评论,来添加一个吧(●'◡'●)