7

我有一个具有以下层次结构的视图控制器:

UIViewController
|
|-view
    |-presentView (UIView)
    |-stagedView (UIView)
    |-UIToolbar

我正在使用该transitionFromView:toView:duration:options:completion:方法为页面卷曲设置动画,以在presentViewstagedView. 当前和暂存视图仅覆盖大部分屏幕,底部有一个 UIToolbar。当我使用UIViewAnimationOptionTransitionCurlUp过渡时,它会为整个根视图(包括工具栏)设置动画,而不仅仅是涉及的两个视图。

[UIView transitionFromView:self.presentView
                    toView:self.stagedView 
                  duration:0.5f 
                   options:UIViewAnimationOptionTransitionCurlUp
                completion:^ (BOOL finished) {
                                   if (finished) {
                                      // cleanup code
                                   }}];

有没有办法只为两个子视图设置动画,而不用单独使用工具栏?如果是这样,怎么做?

4

3 回答 3

3

我一直在努力解决这个问题,我可以解决它的唯一方法是将 fromView 放入另一个视图中。在您的情况下,视图层次结构应如下所示:

UIViewController
|
|-查看
   |-容器视图
      |-现在查看
   |-stagedView
   |-UI工具栏

fromView参数仍应指向 presentView。希望这可以帮助。

于 2011-01-30T11:44:32.237 回答
2

本教程完美地解释了它。

http://joris.kluivers.nl/iphone-dev/?p=CurlTransition

基本上,您想创建一个容器视图,这将是我们将要制作动画的视图,您可以将其称为 containerView。这个容器视图已经添加了一个子视图,它可以填充整个容器视图。然后,当您想要动画到下一个视图时,请使用下面的代码。您删除当前视图并添加下一个视图。最后,您实际上是在您的 containerView 之间转换。在动画开始声明之后,它本身正在被更改。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5f];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:containerView cache:NO];
[presentView removeFromSuperview];
[containerView addSubview:nextView];
[UIView commitAnimations];
于 2011-03-18T22:05:02.420 回答
0

韦恩我建议你使用标签栏,然后实现它的委托方法。我只是为你做的

   - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    {
        //NSArray *vc= tabBarController.viewControllers;
    //  for (int i = 0; i < [vc count]; i++) {
    //      UINavigationController *nc = [vc objectAtIndex:i];
    //      if (nc == tabBarController.selectedViewController) {
    //          continue;
    //      }
            [UIView beginAnimations:@"animation" context:nil];
            //[self.navigationController pushViewController:nc.topViewController animated:NO]; 
            [UIView setAnimationDuration:1.5];
            [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:viewController.view cache:NO]; 
            [UIView commitAnimations];
        return TRUE;

    }

这只是标签栏的逻辑,它只翻转视图而不是标签栏。所以我希望你可以使用工具栏。好吧,它只会给你想法。希望它可以帮助你

于 2011-01-14T07:59:01.477 回答