Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我如何重新创建TweetBot风格';下拉菜单';单元格菜单?_Iphone_Objective C_Ipad_Uitableview - Fatal编程技术网

Iphone 我如何重新创建TweetBot风格';下拉菜单';单元格菜单?

Iphone 我如何重新创建TweetBot风格';下拉菜单';单元格菜单?,iphone,objective-c,ipad,uitableview,Iphone,Objective C,Ipad,Uitableview,应用程序“TweetBot”在每个单元格下方都有一个下拉菜单,点击单元格时会出现该菜单。菜单显示为另一个单元格,位于点击单元格的正下方。下面是一个(相当大的)屏幕截图,以使其更加清晰: 这个界面理念将与我正在创建的应用程序完美契合。由于需要正确匹配单元格/索引路径,因此它不像听起来那么直截了当。我对如何实现这一点有一些想法,但是: 您将如何实现此功能(或者,如果您已经实现了,您是如何实现的?)或者更好—是否已经有任何开源实现?答案是:非常困难。尤其是如果UITableViewCells是半透明

应用程序“TweetBot”在每个单元格下方都有一个下拉菜单,点击单元格时会出现该菜单。菜单显示为另一个单元格,位于点击单元格的正下方。下面是一个(相当大的)屏幕截图,以使其更加清晰:

这个界面理念将与我正在创建的应用程序完美契合。由于需要正确匹配单元格/索引路径,因此它不像听起来那么直截了当。我对如何实现这一点有一些想法,但是:


您将如何实现此功能(或者,如果您已经实现了,您是如何实现的?)或者更好—是否已经有任何开源实现?答案是:非常困难。尤其是如果UITableViewCells是半透明的,并且是“分组”表视图样式,就像我的情况一样

我仍然没有让这个解决方案完美地工作,特别是在每个部分的末尾,那里有圆角问题。然而,这里有一个我到目前为止是如何做到这一点的基本概述

  • 子类UITableViewCell-例如,ExtendableTableViewCell

  • 创建一个简单的类来管理扩展的单元格

  • 从这个简单的类中,让它调用 可扩展的可视单元格,如可扩展单元格,只要单元格 可以延长

  • 在extendCell中,添加相关的扩展动画。这是全部 各种各样的动画技巧,包括遮罩、边界和锚定点 在半透明电池的情况下是必要的——我仍然认为这是必要的 没有完善


  • 如果有人能找到更好的方法,或者对我如何解决动画制作的问题,或者很好地扩展一个部分的底部单元格有什么想法,那么请说

    约旦似乎在这方面取得了一些进展;我自己也没有尝试过这样的事情,但以下是我的看法:

    在每个常规UITableViewCell之间插入一个0px高的透明UITableViewCell。在
    ConfigureCellForIndexPath:

    使工具栏成为UITableView的子视图,但将UITableViewCells放置在其上方。当用户点击某个单元格时,只需将工具栏重新定位在该单元格的底部,并将透明单元格设置为工具栏的高度即可

    记住在动画完成后将工具栏置于透明单元格的前面。否则,用户将向虚拟单元发送触摸事件

    您需要考虑用户点击下界在屏幕外的单元格的情况,并滚动UITableView以保持自定义工具栏处于视图中。否则,用户甚至可能意识不到工具栏已打开


    祝你好运

    创建单元格时,创建两个UIView,一个包含所有正常内容,另一个包含下拉列表

    设置下拉视图的自动调整大小遮罩,使其具有固定的高度和灵活的上边距。(其余的和往常一样) 设置普通内容视图的自动调整大小掩码,使其具有固定的边距和灵活的宽度和高度

    为两个视图分别设置标记

    在内容视图之前添加下拉视图,使其被内容视图隐藏(内容视图也不能有透明背景)

    在表视图委托方法中,例如,当按下单元格时,使用标记将添加内容视图的自动调整大小掩码设置为与之前相同的大小,但高度和底部边距不灵活。并加上:

    [tableView beginUpdates];
    [tableView endUpdates];
    
    创建一个实例变量来保存NSIndexPath对象。将变量设置为按下单元格的索引路径

    在要设置单元格高度if的表视图委托方法中,添加if语句,以便将下拉列表的高度添加到所选单元格的高度(将在上述实例变量中)

    将必要的if语句添加到cell pressed方法中,以确定是显示下拉列表还是隐藏下拉列表


    这只是一个粗略的指针,指向向单元格添加下拉列表的一种方法,还有其他可能更好的方法。当我使用笔记本电脑时,我可能会添加一些代码和更好的细节

    谢谢,但是这种方式的主要限制是cell.contentView不能透明。在我的情况下,它需要,这使得解决方案更加棘手,因为我不能在细胞后面隐藏任何东西!谢谢,如果我使用的是非半透明电池,那么这将是一种方法。通过这种方式,您似乎可以看到隐藏在其他单元格后面的工具栏:)Jordan,一个可能的解决方案是将工具栏的高度也设为0px,并将其与透明单元格一起设置动画。或者,在工具栏顶部放置另一个与背景颜色相同的视图,然后让它从下面滑出。同样的幻觉。这是我最初的想法。但是我的背景是一个图像,所以同样的颜色技巧不起作用。而且,如果我像那样设置动画,它会以挤压的方式设置动画。我尝试创建的动画是一个平滑地从上面的单元格中滑出,没有拉伸的动画。谢谢,您可以将UIImageView与背景图像一起使用。调整它的大小,使其正好在被点击的单元格的下限处结束,并将图像设置为“不按比例缩放”。。我宁愿在那个时候把它剪掉。我不记得是什么背景了。另外,透明单元格的性能不是很差吗?透明单元格似乎工作正常,滚动很平滑等。如果我将图片设置为背景的一部分,你可以在滚动时看到它。是的,我知道-很难,但是透明细胞看起来真的很棒。我不想重新设计应用程序的外观,但如果我不能让它工作,我可能不得不重新设计