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



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

这显示了一个车辆列表的详细信息,但也有水平滚动,因此在滑动下一个它应该加载下一个列表。此外,每个列表都具有拉动刷新功能。图像也可以在旁边滑动以加载更多图像。"概述","详细信息"是不同的选项卡,单击时每个选项卡都会加载其各自的详细信息。用户还可以向上滚动并能够在下面看到更多详细信息。

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

任何建议将不胜感激。

水平UICollectionView作为根

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

每个细节UIViewController都包含一个UITableView

  • UITableView包含刷新拉取
  • 每个UITableViewCell都是详细信息屏幕的不同部分(图像库、选项卡、概述)

每个图像库UITableViewCell都包含一个UICollectionView

  • 每个UICollectionViewCell都包含每个图像

这个与性能相关的最大问题是确保上述所有视图层次结构只构造一次,而不是在每个单元格重用中构造一次。上述所有组件都应可通过模型对象或将填充它们的视图模型注入。每次重用将简单地更改显示的值并重新加载关联的UICollectionView s 和 UITableView s。

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

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

希望这对:)有所帮助

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

这样,如果需要,我可以通过在UITableViewCells内使用另一个水平滚动视图来进一步隔离它。

请不要使用普通UIScrollView进行水平或垂直滚动,因为这些滚动很繁重,并且很难手动实现内存管理。

希望对您有所帮助。干杯!

最新更新