1

UINavigationController私はツリーとして構造化されたデータを持っています (そして UITableView に表示されます)。通常、子ビューを使用してスタックにプッシュする方法を示したいと思います。問題は、UITableView(iPad アプリで) 画面の 1/6 しか占有しないことです (このアプリにUINavigationControllerは他のフルスクリーン画面を処理するがあるため、テーブルのレベルを制御するために使用するのが良い方法です)。iPadNavigationController

TableViewを使用せずに のレベルを変更する視覚効果を得る簡単な方法はありNavigationControllerますか? 現在、データ ソースを変更してデータをリロードするだけですが、画面がちらつくようなことがあります (データの構造がツリー状であることをユーザーが実際に確認することはできません)。

セグエ効果のようなものを作るために、テーブルのサイズをいくつか作成してから、テーブルのサイズ変更をアニメーション化することを考えましたTableViews(テーブルビューの全幅から 0 まで、別の TableView の幅と同時に 0 から 0 まで)-しかし、これが良いアプローチであるかどうかはわかりません。

4

2 に答える 2

1

デフォルトの代わりにreloadSections:withRowAnimation:andUITableViewRowAnimationLeftを使用できます。これは、探しているプッシュのように見えます。UITableViewRowAnimationRightreloadData

参照: http://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/reloadSections:withRowAnimation :

于 2013-05-13T10:11:02.527 に答える
0

このコードを試すことができます (適切な値を設定した後:))

__block CGRect frame = tableView.frame;
    [UIView animateWithDuration:0.5 animations:^{
          frame.origin.x -=tableView.frame.size.width;
    } completion:^(BOOL finished) {
        frame.origin.x = yourViewThatContainsTheTable.frame.size.width
        tableView.frame = frame;
        [tableView reloadData];
        [UIView animateWithDuration:0.3 animations:^{
            frame.origin.x = 0;
            tableView.frame = frame;
        }];
    }];

基本的に、UIView のサブクラスを使用している場合、[UIView animateWith...]メソッドを使用して単純なアニメーションを実行したり、CAAnimations/CABasicAnimation/CAAnimationGroup/CAKeyframeAnimation を使用して UIView のサブクラスでより複雑なアニメーションを実行したりできます。

UIViewController のカスタム遷移が必要な場合は、CATransition を使用できます。

于 2013-05-13T10:04:09.953 に答える