【问题标题】:iphone - UITableView insert sections animationiphone - UITableView 插入部分动画
【发布时间】:2012-06-14 03:03:58
【问题描述】:

我首先制作了一个包含 5 个部分的 UITableView,每个部分 3 行。第一行是标题,第二行是图片,第三行是页脚,数据来自网络,包含每个单元的标题、图片、页脚。因为数据很大,所以我通过向上拖动UITableView的底部进行分页,通过向下拖动UITableView的顶部进行上一页。它就像 9GAG 阅读器一样工作。我也想在换页的时候给9GAG Reader做同样的动画,动画就是-

.当下一页准备好时,它会滚动到我做的下一页,工作正常。 .下一页完成后,上一页将被删除。

对于每一页,有5个部分,所以我是这样做的-我先在页面添加5个部分,如果转到下一页,将再添加5个部分,然后滚动到第5个部分,所以滚动动画效果很好。

但是对于下一部分,我删除了 0-4 个部分后,其余部分的位置发生了变化,这是一个问题。我想固定下一页的位置,我该怎么做?

// here expend to 2 page, 10 sections, and then scroll to the next page
self.totalSections = TOTAL_SECTIONS * 2;       
[self.mainContent reloadData];
[self.mainContent scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:TOTAL_SECTIONS] atScrollPosition:UITableViewScrollPositionTop animated:YES];

// here delete the 0-5 sections, the previous page, but postion is changed..
NSIndexSet *deletes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 5)];
self.totalSections = TOTAL_SECTIONS;
[self.mainContent deleteSections:deletes withRowAnimation:UITableViewRowAnimationNone]; 

【问题讨论】:

    标签: iphone ios uitableview animation


    【解决方案1】:

    我是 9Gag Reader 的两位开发者之一,我不是做这部分的人,但我知道它是如何工作的。 我认为你这样做的方式有点太复杂了。为了创建您正在搜索重新创建的效果,我们截取了 tableview 的屏幕截图并使用它来执行允许我们不添加/删除可能导致崩溃的行的效果,我们只是重新加载内容。

    我希望它有所帮助,但它不适用于 9Gag Reader 克隆 :p !告诉我们您的应用何时上线(查看 iTunes 页面上的联系地址);)

    问候,

    亚瑟@Appinest

    【讨论】:

    • 感谢您的宝贵建议,绝对不是 9Gag Reader 克隆,我借用了(您允许我这样做吗?:) 从您出色的应用程序中获得的一些想法,它适用于中国漫画网站,只有中文!
    • 我明白你们所做的,聪明! :)
    • 如果app上线了,我会联系你,其实我已经自己设计了第一个版本,但是客户认为它不花哨,建议我参考你的,我只是改变了它到第二个版本,所有的想法主要是从你那里借来的。 :)
    • 如果我们允许您借用我们的一些想法?你在开玩笑吗 ?!当然,我们对此感到非常自豪:p 我们对其他应用程序也是如此。继续努力;)
    • 我很快就会做一个 ios memecenter 阅读器,检查我做的 android 版本 - play.google.com/store/apps/details?id=com.jiayuan90.memereader。谢谢你们的好工作,学到了很多。
    【解决方案2】:

    我解决了这个问题,看起来这个序列真的很酷 -

    self.totalSections = TOTAL_SECTIONS * 2;       
    [self.mainContent reloadData];
    
    [self prepareCellCacheTitle:0];
    
    NSIndexSet *deletes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 5)];
    
    self.totalSections = TOTAL_SECTIONS;
    
    [self.mainContent deleteSections:deletes withRowAnimation:UITableViewRowAnimationNone];
    
    [self.mainContent reloadData];
    
    [self.mainContent scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
    

    【讨论】:

    • reloadData = 从头开始​​重新加载所有内容。重新显示可见行。所以我没有兴趣处理 deleteSections 和您的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2016-11-24
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多