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 或类似的任何数据。

下面的 roronoa 让我走上了正确的道路,这是现在工作的版本:

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];

通过根据需要更改动画常量,您可以在上面的代码中拥有任何类型的动画,而不会在 tableview 上出现不需要的动画。

于 2012-05-30T18:15:28.400 回答