在Objective-C中实现此滚动UI的最佳方法是什么?

时间:2015-08-11 18:37:54

标签: ios objective-c uitableview view

我正在尝试实现下图中显示的界面视图。

UI Image

此UI由三部分组成,蓝色标签,箭头标签和灰色标签。

在此UI中,满足以下要求。

  • 标签视图(蓝色标签)和箭头标签依次显示
  • 蓝色标签可以相互改变其位置(如UITableView)
  • 列表项可以删除
  • 点击灰色标签,会出现一个新的蓝色标签,并在最后显示的蓝色标签后追加。

目前我认为通过UITableView和自定义表格单元实现此UI是很好的。但我不确定如何实现它,尤其是在蓝色标签之间显示箭头标签,在灰色标签之前添加新的蓝色标签。

有没有一种很好的方法可以在UITableView中轻松实现这些功能?或者,有没有其他方法可以做到这一点,比如使用UIScrollView?

您的想法和帮助将受到极大的赞赏。

2 个答案:

答案 0 :(得分:0)

如果您正在为iOS9构建,您可以使用UIStackView,使用非常简单并且符合您的要求。您必须使用UIStackview和scrollview。 对于示例,您可以使用以下链接中的代码。

https://gist.github.com/twostraws/a02d4cc09fc7bc16859c

答案 1 :(得分:0)

不要使用UIScrollView。随着蓝色单元格数量的增加,您将使用越来越多的内存。正确使用UITableView可确保随着单元格数组长度的增加,内存使用保持不变(来自UI的内存)。

这里有两个基本选项:

多个部分或单个部分。

对于多个部分,每个UITableViewCell都是一个蓝色单元格。使用UITableViewSectionFooter作为箭头单元格。这保证了每个蓝色单元格上总是有箭头单元格。

使用单个部分,单元格数= #ofbluecells * 2.然后,使用indexPath.row%2来决定是否使蓝色单元格或箭头单元格出列。

无论您采用哪种方法,都应该使用UITableViewFooterView来“添加新单元格”行为。

在任何一种方法中,您都可以通过更新数据模型(很可能是数组)然后调用[tableView beginUpdates]来删除单元格; [tableViewDeleteRowsAtIndexPaths:]; [tableView endUpdates];

要插入新的蓝色单元格,除了添加到数组之外,与删除相同。

在任何一种方法中,您都不必管理单独的箭头单元格数组。如果点击箭头单元格什么都不做,我个人会按照每个蓝色单元格划分1个部分。