在iOS中拥有这种复杂的水平和垂直滚动结构的最佳方法是什么?

时间:2016-04-28 05:36:12

标签: ios objective-c uiscrollview uicollectionview

我正在开发具有这种结构的应用程序。 See image

这显示了一个车辆列表的详细信息,但也有水平滚动,所以在下次滑动时它应该加载下一个列表。此外,每个列表都具有pull to refresh功能。也可以在旁边刷图像以加载更多图像。 "概述","细节"是不同的标签,每个标签在点击时加载各自的详细信息。用户还可以向上滚动并查看下面的更多详细信息。

在我的应用中使用这种结构的最佳方法是什么?我应该使用哪些UI组件以及如何使用?此外还有成千上万的列表,因此我们不会立即加载所有视图以避免内存问题。但是,如果我们在水平布局中重复使用视图,由于每个页面中的复杂视图结构,在更改页面时水平滚动也可能不平滑并且滞后?有没有人遇到过这种视图结构并有解决方案来做到这一点?

我们非常感谢任何建议。

3 个答案:

答案 0 :(得分:1)

水平UICollectionView作为根

  • 每个UICollectionViewCell都包含详细信息UIViewController

每个详细信息UIViewController都包含UITableView

  • UITableView包含要刷新的提示
  • 每个UITableViewCell都是详情屏幕的不同部分(图片库,标签页,概述)

每个图片库UITableViewCell都包含UICollectionView

  • 每个UICollectionViewCell包含每个图片

这个与性能相关的最大问题是确保所有上述视图层次结构只构造一次,而不是每个单元重用。所有上述组件都应该可以注入您的模型对象或将填充它们的视图模型。每次重复使用只会更改显示的值,并重新加载关联的UICollectionViewUITableView

答案 1 :(得分:1)

您应该将UIPageViewController与两个视图控制器一起使用,以便可以使用不同的数据显示。第二件事你可以在两个可以垂直滚动的视图控制器中scrollview

因此,当您水平滑动时,它会使用新数据更改页面,如果您垂直滑动,则会垂直滚动。

希望这会有所帮助:)

答案 2 :(得分:1)

如果我是你,我会在UIPageViewController的每个孩子UITableView中使用UIViewController进行水平滚动,UIPageViewController进行垂直滚动。

这样我可以根据UITableViewCells内部使用另一个水平滚动视图进一步隔离它。

请不要使用普通UIScrollView进行水平或垂直滚动​​,因为它们很重,而且很难手动完成内存管理。

希望它有所帮助。干杯!