我正在考虑在iOS
中创建某种树数据结构的可视化表示。树中节点持有的数据是图像和标签,节点最多可以有6个子节点。
目前,我有一个带有自定义布局的集合视图,当我遍历我的自制树时,我以编程方式计算每个节点的x和y。
此解决方案有效,但几乎没有。随着我构建更多功能,我预计它会崩溃。
我已经考虑过构建树后只使用imageview制作图像,但我计划在树枝上实现某种扩展/折叠。我还需要一种放大和缩小整个树的方法,这对于集合视图来说似乎不太容易。
那里有更好的解决方案吗?
答案 0 :(得分:4)
如何在UIScrollView中使用简单的视图?
这样你可以:
在这里,我使用UIView
创建了一个示例项目:
https://github.com/crisisGriega/swift-simple-tree-drawer
这是一个快速的开发,所以有很多东西可以改进,比如绘制节点之间的线(连接器)的方式。此外,在此示例中,节点被添加到UIView
而不是UIScrollView
。但是你可以点击节点来显示/隐藏它的孩子。
答案 1 :(得分:1)
考虑使用SpriteKit
而不是使用UIKit
组件。使用UICollectionView
创建动态树状布局并不容易,因为您可以查看其数据源定义,它不是要对树数据进行建模,而是对平面列表数据进行建模。如果数据模型根本不同,那么一切都变得难以理解。
使用SpriteKit
,每个节点对象都可以由SKSpriteNode
对象呈现。 Layouting子节点由其父节点管理。您也可以使用物理引擎自动定位节点,并且它具有额外的好处,即可以用最小的效果避免重叠。最后但并非最不重要的是,SpriteKit
开箱即用,支持缩放和滚动。