4

我正在考虑在iOS. 树中一个节点持有的数据是一张图片和一个标签,一个节点最多可以有6个孩子。

目前,我有一个带有自定义布局的集合视图,我在遍历自制树时以编程方式计算每个节点的 x 和 y。

该解决方案有效,但几乎没有。随着我构建更多功能,我预计它会分崩离析。

我已经考虑在构建树后制作图像并仅使用图像视图,但我计划在分支上实现某种展开/折叠。我还需要一种方法来放大和缩小整个树,这对于集合视图来说似乎并不容易。

那里有更好的解决方案吗?

4

2 回答 2

4

在 UIScrollView 中仅使用简单视图怎么样?

这样你可以:

  • 控制展开和折叠每个节点。
  • 放大和缩小整体或细节视图。
  • 在巨大的树结构的情况下滚动。

UIView这里我使用s 创建了一个示例项目: https ://github.com/crisisGriega/swift-simple-tree-drawer

这是一个快速的开发,所以有很多可以改进的地方,比如节点之间的线(连接器)的绘制方式。同样在此示例中,节点被添加到 aUIView而不是 a UIScrollView。但是您可以点击节点来显示/隐藏它的子节点。

于 2016-07-14T12:25:13.017 回答
1

考虑使用SpriteKit而不是使用UIKit组件。使用它创建动态树状布局并不容易,UICollectionView您可以查看其数据源定义,它不是要对树数据进行建模,而是对平面列表数据进行建模。如果数据模型根本不同,一切都会变得难以进行。

使用SpriteKit,您的每个节点对象都可以由一个SKSpriteNode对象渲染。布局子节点由其父节点管理。您也可以使用物理引擎来自动定位节点,它还有一个额外的好处是可以用最少的 efferot 避免重叠。最后但同样重要的是,开箱即用地支持缩放和滚动SpriteKit

于 2016-07-18T08:52:37.113 回答