6

UITableView現在、私はUITableView Cellsそのスライドを左右に含むiPadアプリを作成しています。私は、スライドが発生したときに通知するNSNotificationベースのシステムを持っていUITableViewControllerます。UITableViewCell移動したセルの下と、移動したセルの下にあるセルの上を表示する必要があります。アプリで見られるように折り畳みアニメーションをクリアしますが、pinch gesture(つまり、自動折り畳み)は行いません。MPFoldTransitionというこのライブラリを見つけました。ただし、はサポートしていませんUITableViewpinch gestureこのチュートリアルでも調べましたただし、このチュートリアルでは、ユーザーがピンチジェスチャを実行する必要があるため、アニメーションを自動的にアニメーション化する方法については説明していません。私はウェブを見回しましたが、何も見つからないようです。どんな助けでもありがたいです。

ありがとう

4

1 に答える 1

7

MPFoldTransitionこれは、 's を使用して完全に可能transitionFromView: toView:...です。必要に応じてリンクできるサンプルプロジェクトを作成しましたが、実際には次のようになります。

- (void)addNewTableCellToIndexPath:(NSIndexPath *)indexPath {
    // Add the new object to the datasource and reload the row
    [dataSourceArray insertObject:@"New" atIndex:indexPath.row];

    [self.tableView beginUpdates];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];

    //setup temporary cell
    UITableViewCell *fromCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    [fromCell setBackgroundColor:[[self.tableView cellForRowAtIndexPath:indexPath] backgroundColor]];
    //setup cell to animate to
    UITableViewCell *toCell = [self.tableView cellForRowAtIndexPath:indexPath];
    [toCell.textLabel setText:dataSourceArray[indexPath.row]];

    //add fold animation to the cells create above
    [MPFoldTransition transitionFromView:fromCell
                                  toView:toCell
                                duration:0.4
                                   style:MPFoldStyleUnfold
                        transitionAction:MPTransitionActionNone
                              completion:^(BOOL finished) {
                                  [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
                              }];
}

Aboutは、インデックスパスを引数として取る関数です。折り畳み遷移でセルを追加するインデックスパスを送信すると、残りのセルを下にシフトしながら、折り畳むための空白の一時セルがテーブルに作成されます。これは完璧ではありません。主な理由は、フォールドの持続時間と完全に一致するようにUITableViewRowAnimationの持続時間を変更する方法がわからないためです。

いずれにせよ、これはあなたを動かすのに十分なはずです。お役に立てれば!

于 2013-03-12T15:55:50.823 に答える