填写动画后的视图空白区域

时间:2011-11-11 11:46:04

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

我目前有一份文件清单,一个接一个地显示。当其中一些文档动画到另一个文档(创建文件夹)时,我想填充以前文档中剩余的空白区域,每个文档向上移动165个像素(每个文档缩略图的高度)。

所以,我认为我可以做到这一点。但是可以有多个动画视图,因此它不起作用。

例如,2个文档(位于文档上方)可能会消失,然后是该文档之后的空白区域(之前的文档曾经是),然后是另外2个文档,后跟3个空格,然后是另外4个文档文档。

例:
白色空格表示文件已消失,黑色表示存在的文件
example
我决定采用一种可行的方法:

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

然后

  • 通过将当前文档上方的“透明”文档数乘以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);;
}

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

1 个答案:

答案 0 :(得分:0)

你需要更通用地思考....将这些方框列为一个列表,你可以渲染列表(按照顺序排列方框),现在如果你删除一个或两个方框(或任何数字!)你只需在动画块中重新渲染列表,一切正常......

签出my article on doing exactly this.它在网格中有效,但原理是相同的,您只需垂直布局项目。