UIScrollView优于UITableView和UICollectionView的优势

时间:2016-05-05 10:12:24

标签: ios objective-c uitableview uiscrollview uicollectionview

我正在使用MAC工具,您可以在其中查看iOS应用的当前viewcontroller UIElements层次结构。我用它来测试很多第三方应用程序。根据我的知识,大多数时候,开发人员使用UITableViewUICollectionView来横向或纵向列出内容。

在测试某些标准应用(尤其是电子商务)时,正在使用UIScrollView UIView作为子视图,并在其上添加了手势。我想要了解的是,为什么这些应用程序没有使用tableview或集合列出的东西?这背后的原因是什么?

5 个答案:

答案 0 :(得分:3)

这是我总喜欢UITableView和UICollectionView的一些事情。

  1. UITableView和UICollectionView的最大优势之一是可重用性
  2. 来到 autolayout 时,它易于通过UIScrollView处理UITableView和UICollectionView
  3. 对视图进行索引
  4. 委派方法支持
  5. 重新加载(更新)视图与UIScrollView轻松比较
  6. 我想念的一件事是UITableView和UICollectionView中的 Paging ,因为它在UIScrollView中非常流畅

答案 1 :(得分:1)

(1)对UIScrollView使用UITableView或UICollectionView的优点是内存。

例如,如果您有100个项目,那么您必须在UIScrollView中继续添加以下内容,以便100个项目数据将在内存中。

在UITableView或UIcollectionView中,有dequeueReusableCellWithIdentifier,它只保留内存中可见的那些项目。当您向上/向下滚动时,项目不可见将在内存中。

(2)委托方法 - NoOfSections,NoOfRows,DidSelectedRow等 - 虽然在UIScrollView中没有东西。所以你必须通过编码来管理。

答案 2 :(得分:0)

UICollectionView类: -

UICollectionView类管理有序的数据项集合,并使用可自定义的布局呈现它们。集合视图提供与表视图相同的常规功能,除了集合视图能够支持的不仅仅是单列布局。集合视图支持可自定义的布局,可用于实现多列网格,平铺布局,圆形布局等等。如果需要,您甚至可以动态更改集合视图的布局。

UITableView类: -

表格视图显示单个列中的项目列表。 UITableView是UIScrollView的子类,它允许用户滚动表,尽管UITableView只允许垂直滚动。包含表的各个项的单元格是UITableViewCell对象; UITableView使用这些对象绘制表格的可见行。单元格具有内容标题和图像 - 并且可以在右边缘附近具有附件视图。标准附件视图是公开指示器或详细公开按钮;前者导致数据层次结构中的下一级别,后者导致所选项目的详细视图。附件视图也可以是框架控件,例如开关和滑块,或者可以是自定义视图。表视图可以进入编辑模式,用户可以在其中插入,删除和重新排序表的行。

人们主要使用UICollectionview来创建网格中显示多个图像的UI类型。这将使用UITableView具有复杂的逻辑,但使用UICollectionview,这将很容易。

答案 3 :(得分:0)

UITableView比UIScrollView有许多优点:

  • 使用自动布局时,UITableView更具可重用性。
  • 列表项

UITableView的内存管理更好。

答案 4 :(得分:0)

UIScrollView相对于UITableView / UICollectionView / AutoLayout的一个优点是平滑滚动性能。

最近,我需要重新实现一些使用UIScrollView显示新闻内容的旧新闻应用程序。应用程序将创建所有视图并将其添加到UIScrollView。这将消耗大约15-20 MB的RAM内存。

我必须实现的新设计更复杂,但可以通过UIScrollView或UITableView和UICollectionView组合实现。 我选择了UITableView& UICollectionView和自动布局。完成实施后,性能可怕。以前的UIScrollView实现在iPhone 4S上完美的60fps。有了新的实现,我甚至会在iPhone 6S上丢帧。我对图像进行了优化,以便它们在背景上重新调整大小以使图像没有错位,并且我还最小化了混合图层的通过。这有点帮助,但仍然远非完美。

我最终在许多地方放弃了AutoLayout并预加载了所有UITableView单元并将它们保存在NSArray中,因此可以立即返回单元而无需配置(因为这需要时间)。当然,桌面视图单元可重用性在马桶上消失了,但是在iPhone 4S上滚动性能也有所提升。

结论:有时候,如果您的整个视图不是太大,UIScrollView和手动帧计算是值得的,以便它可以轻松地适应内存。 通常,UITableView& UICollectionView&滚动时,自动布局在丢帧方面可能会很昂贵。最终用户不会关心你如何实现它,但他们会抱怨应用程序不顺畅。

当然,你很少需要这个。始终坚持使用UITableView& AutoLayout(或UICollectionView& AutoLayout,如果需要),因为它们使生活更容易,原因很多(容易支持包括旋转在内的各种屏幕尺寸),但请记住,如果黑色的一天到来并且需要,可以使用UIScrollView。