1

tableiviewを含むビューコントローラーをuinavigationコントローラーにプッシュしています。

CourseMenuViewController *mvc = [[[CourseMenuViewController alloc] initWithSlidingNavigationcontroller:self.slidingNavigationController] autorelease];
mvc.course = course;
[self.navigationController pushViewController:mvc animated:YES];
[self.navigationController setNavigationBarHidden:NO animated:NO];

これまでのところ、すべてが期待どおりに機能しています。私の問題は、アニメーションを見て、ビューが左からアニメーション化されているときに、すべてのテーブルビューの行が画面の上から下にアニメーション化されているのを見ると発生します。これにより、ビューが斜めのパスで左上隅から右下隅に移動しているように感じられます。

私の質問は、アニメーションではなくテーブルビューを表示させるにはどうすればよいですか?すべてのセルが静的であるため、NSFetchedResultsControllerなどからのデータを待機しないことを追加する必要があります。

以下のロロノアは私を正しい道に導いてくれました、そしてこれが現在機能しているバージョンです:

CourseMenuViewController *mvc = [[[CourseMenuViewController alloc] initWithSlidingNavigationcontroller:self.slidingNavigationController] autorelease];
mvc.course = course;

CATransition *caTransition = [CATransition animation];
caTransition.duration = 0.35;
caTransition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
caTransition.delegate = self;
caTransition.type = kCATransitionPush;
caTransition.subtype = kCATransitionFromRight;
[self.navigationController.view.layer addAnimation:caTransition forKey:nil];

[self.navigationController pushViewController:mvc animated:NO];
4

1 に答える 1

1

クラスCourseMenuViewControllerとinitWithSlidingNavigationcontrollerの詳細については触れていませんが、以下を使用して作業を完了することができます。-

CourseMenuViewController *mvc =[[CourseMenuViewController alloc] init];
[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[self.navigationController pushViewController:mvc animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
[mvc release];

テーブルビューに不要なアニメーションを表示せずに、必要に応じてアニメーション定数を変更することで、上記のコードで必要な任意のタイプのアニメーションを作成できます。

于 2012-05-30T18:15:28.400 に答える