2011-11-11 9 views
0

現在、ドキュメントのリストが表示されています。これらのドキュメントのいくつかが別のドキュメント(フォルダを作成する)に向かってアニメーションすると、前のドキュメントが残っている空白を埋めて、それぞれ165ピクセル(各ドキュメントのサムネイルの高さ)ずつ移動します。アニメーションの後に使用されていたビューの空白を埋める

私はちょうどそれを行うことができると思った。しかし、複数のビューがアニメーション化される可能性があるため、実際には動作しません。

たとえば、2つの文書(文書の上にある)が消えて、その文書の後に空白があり(前の文書があった場所)、別の2つの文書、3つの空白、 4つの文書。

例:
ホワイトスペースがなくなっている文書、黒を示しているが
example
を存在する文書を示し、私はうまくいくかもしれない方法を決定:

  • 何をご覧ください空白は文書の上にあります(別の文書に当たるまで、文書の上にある空白の総数ではなく、文書に到達するまでの数字だけです)

その後、

によって現在のドキュメント上で「透明のドキュメントの数を乗じて、それを上に移動し、すべての単一のドキュメントに対してこのプロセスを繰り返すためにどのように多くのピクセルを計算、リストの一番下から開始します。

私はそのためにいくつかのコードを書こうとしましたが、すべてのドキュメントを完全に移動するわけではありません。代わりに、最初のドキュメントを移動しますが、他のドキュメントは移動しません。がドキュメント上の空白スペースの数です

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

あなたはもっと一般的に考える必要があります。ボックスをリストとして表示すると、リストをレンダリングすることができます(1つまたは2つのボックス(または任意の数)を削除した場合)アニメーションブロック内のリストを再レンダリングするだけです。

チェックアウトmy article on doing exactly this.グリッドで動作しますが、原則は同じです。アイテムを垂直方向にのみレイアウトするだけです。

関連する問題