我目前有一份文件清单,一个接一个地显示。当其中一些文档动画到另一个文档(创建文件夹)时,我想填充以前文档中剩余的空白区域,每个文档向上移动165个像素(每个文档缩略图的高度)。
所以,我认为我可以做到这一点。但是可以有多个动画视图,因此它不起作用。
例如,2个文档(位于文档上方)可能会消失,然后是该文档之后的空白区域(之前的文档曾经是),然后是另外2个文档,后跟3个空格,然后是另外4个文档文档。
例:
白色空格表示文件已消失,黑色表示存在的文件
我决定采用一种可行的方法:
然后
并从列表底部开始为每个文档重复此过程。
所以我尝试为此编写一些代码,但它并没有完全移动所有文档。相反,它会移动第一个文档,但不会移动其他文档。
这是我的代码:
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);;
}
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
你需要更通用地思考....将这些方框列为一个列表,你可以渲染列表(按照顺序排列方框),现在如果你删除一个或两个方框(或任何数字!)你只需在动画块中重新渲染列表,一切正常......
签出my article on doing exactly this.它在网格中有效,但原理是相同的,您只需垂直布局项目。