繁体   English   中英

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

[英]What is the best way to implement this scrolling UI in Objective-C?

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

UI图片

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

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

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

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

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

您的想法和帮助将不胜感激。

如果您要针对iOS9进行构建,则可以使用UIStackView,它非常易于使用并且符合您的要求。您必须将UIStackview与scrollview结合使用。 对于示例,您可以使用以下链接中的代码。

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

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

您在这里有两个基本选择:

多个部分,或单个部分。

具有多个部分,每个UITableViewCell是一个蓝色单元格。 将UITableViewSectionFooter用于箭头单元格。 这样可以确保每个蓝色单元格始终有一个箭头单元格。

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

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

无论采用哪种方法,都可以通过更新数据模型(很可能是数组)然后调用[tableView beginUpdates]来删除单元格; [tableViewDeleteRowsAtIndexPaths:]; [tableView endUpdates];

要插入一个新的蓝色单元格,与删除相同,只不过要添加到数组中。

无论采用哪种方法,都不必管理单独的箭头单元阵列。 如果点击箭头单元格无济于事,我个人将每个蓝色单元格分成1个部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM