在 Objective-C 中实现此滚动 UI 的最佳方法是什么?
What is the best way to implement this scrolling UI in Objective-C?
我正在尝试实现如下图所示的界面视图。
这个UI由三部分组成,蓝色标签、箭头标签和灰色标签。
在这个UI中,需要满足以下要求。
- 标签视图(蓝色的)和箭头标签依次显示
- 蓝色标签可以相互改变位置(如UITableView)
- 可以删除列表项
- 通过点击灰色标签,一个新的蓝色标签出现并附加在已经显示的最后一个蓝色标签之后。
目前我觉得用UITableView和自定义tablecell来实现这个UI还是不错的。但我不确定如何实现它,尤其是在蓝色标签之间显示箭头标签,在灰色标签之前附加新的蓝色标签。
有没有什么好的方法可以在UITableView中轻松实现这些功能?或者,还有其他方法可以做到这一点,比如使用 UIScrollView?
非常感谢您的想法和帮助。
如果您正在为 iOS9 构建,您可以使用 UIStackView,它使用起来非常简单并且适合您的 requirement.You 必须使用带有滚动视图的 UIStackview。
对于示例,您可以使用下面的代码 link.
不要使用 UIScrollView。随着蓝色单元格的数量越来越大,您将使用越来越多的内存。正确使用 UITableView 可确保随着单元格数组长度的增长,您的内存使用保持固定(来自 UI 的内存)。
这里有两个基本选项:
多个部分,或单个部分。
对于多个部分,每个 UITableViewCell 都是一个蓝色单元格。对箭头单元格使用 UITableViewSectionFooter。这保证每个蓝色单元格总是有箭头单元格。
对于单个section,cells的数量=#ofbluecells * 2。然后,使用indexPath.row % 2来决定是否出队一个蓝色cell或arrow cell。
无论您采用哪种方法,您都应该为 'add new cell' 行为使用 UITableViewFooterView。
在任何一种方法中,您都可以通过更新数据模型(很可能是数组)然后调用 [tableView beginUpdates] 来删除单元格; [tableViewDeleteRowsAtIndexPaths:]; [tableView endUpdates];
插入一个新的蓝色单元格,除了添加到数组外,与删除相同。
无论采用哪种方法,您都不必管理单独的箭头单元格数组。如果点击箭头单元格没有任何反应,我个人会走每个蓝色单元格 1 个部分的路线。
我正在尝试实现如下图所示的界面视图。
这个UI由三部分组成,蓝色标签、箭头标签和灰色标签。
在这个UI中,需要满足以下要求。
- 标签视图(蓝色的)和箭头标签依次显示
- 蓝色标签可以相互改变位置(如UITableView)
- 可以删除列表项
- 通过点击灰色标签,一个新的蓝色标签出现并附加在已经显示的最后一个蓝色标签之后。
目前我觉得用UITableView和自定义tablecell来实现这个UI还是不错的。但我不确定如何实现它,尤其是在蓝色标签之间显示箭头标签,在灰色标签之前附加新的蓝色标签。
有没有什么好的方法可以在UITableView中轻松实现这些功能?或者,还有其他方法可以做到这一点,比如使用 UIScrollView?
非常感谢您的想法和帮助。
如果您正在为 iOS9 构建,您可以使用 UIStackView,它使用起来非常简单并且适合您的 requirement.You 必须使用带有滚动视图的 UIStackview。 对于示例,您可以使用下面的代码 link.
不要使用 UIScrollView。随着蓝色单元格的数量越来越大,您将使用越来越多的内存。正确使用 UITableView 可确保随着单元格数组长度的增长,您的内存使用保持固定(来自 UI 的内存)。
这里有两个基本选项:
多个部分,或单个部分。
对于多个部分,每个 UITableViewCell 都是一个蓝色单元格。对箭头单元格使用 UITableViewSectionFooter。这保证每个蓝色单元格总是有箭头单元格。
对于单个section,cells的数量=#ofbluecells * 2。然后,使用indexPath.row % 2来决定是否出队一个蓝色cell或arrow cell。
无论您采用哪种方法,您都应该为 'add new cell' 行为使用 UITableViewFooterView。
在任何一种方法中,您都可以通过更新数据模型(很可能是数组)然后调用 [tableView beginUpdates] 来删除单元格; [tableViewDeleteRowsAtIndexPaths:]; [tableView endUpdates];
插入一个新的蓝色单元格,除了添加到数组外,与删除相同。
无论采用哪种方法,您都不必管理单独的箭头单元格数组。如果点击箭头单元格没有任何反应,我个人会走每个蓝色单元格 1 个部分的路线。