在 iOS 中拥有这种复杂的水平和垂直滚动结构的最佳方式是啥? [关闭]

Posted

技术标签:

【中文标题】在 iOS 中拥有这种复杂的水平和垂直滚动结构的最佳方式是啥? [关闭]【英文标题】:Best way to have this complex horizontal as well as vertical scrolling structure in iOS? [closed]在 iOS 中拥有这种复杂的水平和垂直滚动结构的最佳方式是什么? [关闭] 【发布时间】:2016-04-28 05:36:11 【问题描述】:

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

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

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

任何建议将不胜感激。

【问题讨论】:

实现视图水平滚动的最佳方法是使用 SwipeView (github.com/nicklockwood/SwipeView),因为它具有视图可重用功能 这个问题的范围很广,可能主要基于意见,因为您要求“最佳方式”来完成此行为。你已经尝试了什么?请发布您正在进行的实施。 【参考方案1】:

水平UICollectionView为根

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

每个细节UIViewController 都包含一个UITableView

UITableView 包含拉动刷新 每个UITableViewCell 都是详细信息屏幕的不同部分(图片库、标签、概览)

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

每个UICollectionViewCell 包含每个图像

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

【讨论】:

谢谢!我最终使用了 UICollectionView 和 UITableView,每个 UICollectionViewCell 中有多个部分。【参考方案2】:

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

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

希望这会有所帮助:)

【讨论】:

页面视图控制器是做这些事情的更好方法。【参考方案3】:

如果我是你,我会使用 UIPageViewController 水平滚动和 UITableView 垂直滚动每个子 UIViewControllerUIPageViewController

如果我愿意,我可以通过在UITableViewCells 中使用另一个水平滚动视图来进一步隔离它。

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

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

【讨论】:

以上是关于在 iOS 中拥有这种复杂的水平和垂直滚动结构的最佳方式是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios的页面控件中实现水平和垂直滚动

无限滚动IOS在gridview中一次垂直和水平滚动

UITableview ios中的水平和垂直滚动视图

html中表格水平和垂直滚动,表头垂直不动,可以水平滚动,大神们请问怎么实现啊?

垂直滚动到水平滚动回到垂直滚动

css 滚动条在iOS中始终可见(垂直和水平)