【问题标题】:Fill in blank spaces where views used to be after animation填充动画后视图的空白区域
【发布时间】:2011-11-11 11:46:03
【问题描述】:

我目前有一个文档列表,一个接一个地显示。当其中一些文档向另一个文档移动(以创建文件夹)时,我想填充先前文档剩余的空白空间,将它们向上移动 165 像素(每个文档缩略图的高度)。

所以,我认为我可以做到这一点。但是动画可能不止一个视图,所以它并没有真正起作用。

例如,2 个文档(位于一个文档之上)可能会消失,然后是该文档之后的一个空格(以前的文档所在的位置),然后是另外 2 个文档,接着是 3 个空格,然后是另外 4 个文件。

示例:
空白表示已消失的文档,黑色表示存在的文档

我决定了一种可行的方法:

  • 找出一个文档上方有多少空格(直到它碰到另一个文档,所以它不是文档上方的空格总数,只是到达文档之前的数字)

然后

  • 通过将当前文档上方的“透明”文档的计数乘以 165 来计算向上移动的像素数

并从列表底部开始对每个文档重复此过程。

所以我尝试为此编写一些代码,但它并没有完全移动所有文档。相反,它会移动第一个文档,但不会移动其他文档。

这是我的代码:

incCtr 是文档上方的空格数。

for (int i = [documentThumbnails count]-1; i != 0; i--) {
    int ctr = i;
    int incCtr = 0;

    //while there is a blank space, increment incCtr
    while (![self thumbnailExistsAtSpecificIndex:ctr-1]) {
        ctr--;
        incCtr++;
    }

    uint32_t toMoveUpYCoordinate;
    thumbnailView *object = [documentThumbnails objectAtIndex:i];

    toMoveUpYCoordinate = (165 * incCtr);

    object.frame = CGRectMake(13, object.frame.origin.y-toMoveUpYCoordinate, object.frame.size.width, object.frame.size.height);;
}

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: iphone objective-c arrays animation for-loop


    【解决方案1】:

    您需要更笼统地思考.... 将框想象成一个列表,您可以渲染列表(根据它们的顺序放置框),现在如果您删除一两个框(或任意数量!)只需在动画块中重新渲染列表,一切正常......

    查看my article on doing exactly this.它在网格中工作,但原理相同,您只需垂直排列项目即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多