应用程序'TweetBot'在每个单元格下方都有一个下拉菜单,当单击该单元格时会出现该菜单。菜单显示为不同的单元格,位于抽头单元格的正下方。这是一个(相当大的)截图,使其更加清晰:
这个界面的想法完全适合我正在创建的应用程序。由于需要正确匹配cell / indexPaths,因此它并不像听起来那么直接。我对如何实现这一点有一些想法 - 但是:
您将如何实现此功能(或者如果您已经完成此功能,您是如何实现此功能的?)或者甚至更好 - 是否已经有任何开源实现?
答案 0 :(得分:4)
创建单元格时,创建2个UIViews,一个包含所有正常内容,另一个包含下拉列表。
设置下拉视图的自动调整大小遮罩,使其具有不灵活的高度和灵活的上边距。 (其他照常) 设置普通内容视图的自动调整大小蒙版,使其具有不灵活的边距和灵活的宽度和高度。
为两个视图设置标记。
在内容视图之前添加下拉视图,使其被内容视图隐藏(内容视图也不能具有透明背景)
在表格视图委托方法中,对于按下单元格时,使用标记来设置添加的内容视图的自动调整大小遮罩,使用与之前相同的内容,除了灵活的高度和灵活的底部边距。并添加:
[tableView beginUpdates];
[tableView endUpdates];
创建一个实例变量来保存NSIndexPath对象。将变量设置为按下的单元格的索引路径。
在表视图中委托方法设置单元格的高度,添加一个if语句,以便将下拉列表的高度添加到所选单元格的高度(将在上面描述的实例变量中)
将必要的if语句添加到单元格按下的方法,以确定是显示下拉列表还是隐藏它。
这只是指向向单元格添加下拉的一种方法的粗略指针,还有其他方法,这可能更好。当我到笔记本电脑时,我可能会添加一些代码和更好的细节。
答案 1 :(得分:1)
答案是:有很多困难。特别是如果您的UITableViewCells是半透明的并且具有“分组”表格视图样式,就像我的情况一样。
我仍然没有完美的解决方案,特别是在每个部分的末端,圆角有问题。但是,这是我迄今为止如何做到这一点的基本概要。
子类UITableViewCell - 例如, ExtendableTableViewCell 。
创建一个简单的类来管理扩展的单元格。
从这个简单的类中,让它调用一个方法 ExtendableTableViewCell,例如 extendCell ,只要单元格应该 延长。
- 醇>
在extendCell中,添加相关的扩展动画。有一切 各种带有遮罩,边界和锚点的动画技巧 在半透明细胞的情况下是必要的 - 我仍然是这样 还没有完善。
如果有人能够看到更好的方法,或者对如何解决动画问题,或者很好地扩展部分中的底部单元格有任何想法,请说出来!
答案 2 :(得分:1)
在每个常规UITableViewCell之间插入一个0px高度的透明UITableViewCell。您应该可以使用if(index%2)
ConfigureCellForIndexPath:
条件块轻松完成此操作
使工具栏成为UITableView的子视图,但将UITableViewCells置于其上方。当用户点击单元格时,您只需将工具栏重新定位在该单元格的底部,并将透明单元格设置为工具栏的高度。
请记住在动画完成后将工具栏放在透明单元格的前面。否则,用户将向虚拟小区发送触摸事件
您需要考虑用户点击下边界不在屏幕上的单元格的情况,并滚动UITableView以使自定义工具栏保持在视图中。否则,用户可能甚至没有意识到工具栏已被打开。
祝你好运!