如何在 Xcode 视图层次结构中拥有深度视图?
Posted
技术标签:
【中文标题】如何在 Xcode 视图层次结构中拥有深度视图?【英文标题】:How to have views with depth in Xcode view hierarchy? 【发布时间】:2020-01-09 10:38:17 【问题描述】:我目前正在尝试重现 UIPickerView
的行为,自己从头开始编写。
它的一个方面是我无法重现的,那就是出现在 Xcode 的 Debug View Hierarchy 选项卡上的具有深度的“视图”(下图)。我引用了视图词,因为我不知道它是否是UIView
。它在 Debug View Hierarchy 选项卡中不可选择,但我可以将光标悬停在它上面,它会变成紫色突出显示颜色,如图所示。
我的猜测是某种CALayer
,所以我尝试了以下方面的多种不同组合:
CATransformLayer
m34
的值 CATransform3D
旋转/平移变换
CALayer
's zPosition
但是,使用这些修改完成的所有绘图都会按预期投影到二维中。
查看层次结构树,似乎这个 3D 框是 UIPickerTableView
的子级。其中的单元格类型为UIPickerTableViewTitledCell
。这两种类型似乎都是内部的。我还没有尝试使用普通的表格或集合视图,因为我认为普通的CALayer
自定义应该能够完成这项工作。
有没有办法重现它?
这张图片是通过在普通的UIViewController
的view
上添加UIPickerView
生成的,在模拟器上运行项目,然后单击Xcode 上的Debug View Herarchy 按钮。
【问题讨论】:
【参考方案1】:我想这只是 XCode 的一个内置可视化功能,特别是对于 UIPickerView
及其子类(或者可能对于其他一些类似的视图)。如果你聚焦得更深,这个立方体会消失,你会看到这些转换后的标签层(这在 XCode 11 中工作得不是很好,尽管有聚焦)。
另一个例子,在 Reveal(AppCode 的可视化工具)中,您将看到没有此 3D 可视化的视图框架(蓝色框架)及其转换层(填充框架),并且整个选取器视图看起来很平坦
【讨论】:
所以我想我自己的视图在调试器中总是会受到正交投影的影响,但 UIKit 内置有时不会?感谢您的回复! @LucasBarbosa 我认为是的,除非你从那些“启用投影”的视图继承,例如在我的UIPickerView
子类中这个技巧有效以上是关于如何在 Xcode 视图层次结构中拥有深度视图?的主要内容,如果未能解决你的问题,请参考以下文章
XCode Interface builder缺少视图层次结构