哪个组件应该用于在iOS中创建卡?

时间:2016-09-14 10:22:46

标签: ios swift xcode

我想创建一个应用,用户可以滚动查看动态创建的 (如Facebook的应用)。哪个组件更适合此目的?

  • UIScrollView 中可重复使用的 UIView (性能?)
  • UIScrollView
  • UIStackView (...?)
  • UITableView 内的 UITableCellView (不要这么认为)

我希望它有一些阴影和动态高度,具体取决于内容。

谢谢。

照片 enter image description here

1 个答案:

答案 0 :(得分:2)

如果您想在Facebook上创建类似于新闻Feed的内容,那么使用UITableView即可。根据您需要的卡片布局的数量,您可以为每个卡片布局创建不同的动态原型UITableViewCell。 UITableViews是最自然的,也非常适合性能。它基本上是你在UIScrollView中“可重用的UIView”中提到的。 UITableView是一个UIScrollView,而UITableViewCells基本上是UIViews,是的,它们确实可以重用。在任何给定时间,只需要足够的单元来显示屏幕上的内容。如果您的新闻Feed中有100个项目,则仍然只有7个单元格,当您滚动浏览新闻Feed时,将重复使用7个单元格以在新闻Feed上创建不同的项目。

对于动态高度:您将无法在故事板中明确声明您想要动态高度。相反,你所做的是为你的标签设置不同的高度,使lines属性等于0.一旦等于0,那么你需要确保从单元格的顶部到底部都有正确放置的约束。您可能有许多元素,但iOS需要完美的约束才能明确确定高度。

在相应的View Controller中,您可以在viewDidLoad方法中编写以下内容:

tableView.rowHeight = UITableViewAutomaticDimension

然后,我建议你做tableView.estimatedRowHeight = 150或类似的事情,这样你的滚动就不会那么糟糕。

100%的滚动解决方案(特别是向上滚动)不会因为它通常与动态单元格高度有关而实现tableView委托方法tableView(:heightForRowAtIndexPath)方法。

那就是说,这只是如何开始这个问题的一个小小的前提。动态高度的主题可以通过Web上的大量教程找到,也可以在Stackoverflow上找到关于人们遇到的问题的大量问题。