【问题标题】:Is it possible to push custom animation with 2 layer?是否可以使用 2 层推送自定义动画?
【发布时间】:2012-07-21 14:09:54
【问题描述】:
view 1 is current view
view 2 is view to push

可以吗

 view 1 draw at top layer
 view 2 draw at bottom layer

将视图 1 下移到屏幕外,同时将 CGAffineTransformMakeScale 视图 2 从 0.1 移到 1.0

我该怎么做?

更新

我想将所有屏幕(包括导航控制器)移动到屏幕底部。 那么我的问题是当我在导航控制器上绘制这两个层时 在我将 navigationController 向下移动后,这两个层都将使用 navigationController

如何在 navigationController 后面创建一个临时视图 viewTopush(View 2) 并进行动画处理

这是我的代码,但它还不能工作。

        RO_GALViewController *galView = [[RO_GALViewController alloc] initWithNibName:@"RO_GALViewController" bundle:nil];


        UINavigationController* navigationController;
        CGRect frame;


        navigationController = [self navigationController];

        frame = [navigationController.view convertRect:self.view.frame fromView:self.view.superview];

        galView.view.frame = frame;
        galView.view.transform = CGAffineTransformMakeScale(0.1,0.1);
        galView.view.alpha = 0;
        UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
        blackView.backgroundColor = [UIColor blackColor];
        blackView.alpha = 0;
        [[self navigationController].view addSubview:blackView];
        [[self navigationController].view addSubview:galView.view];
        [navigationController.view bringSubviewToFront:self.view];

        [UIView animateWithDuration:1.3f
                              delay:0.0f
                            options:UIViewAnimationCurveEaseInOut
                         animations:^{
                             galView.view.alpha = 1.0f;
                             galView.view.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
                             navigationController.view.frame = CGRectMake(self.view.frame.origin.x, 460, self.view.frame.size.width, self.view.frame.size.height);
                         } completion:^(BOOL finished) {
                             [[self navigationController] pushViewController:galView animated:NO];

                         }];

【问题讨论】:

    标签: iphone animation uinavigationcontroller pushviewcontroller


    【解决方案1】:

    只需将两个动画都放在 beginAnimations/commitAnimations 代码部分中。它将同时执行动画。您不必担心图层。

    【讨论】:

      【解决方案2】:

      您添加到此问题的标签(uinavigationcontrollerpushviewcontroller)表明您正在谈论在屏幕上推送新的视图控制器,但您的描述听起来像是两个视图都是包含在同一个视图中的两个子视图视图控制器...

      如果您正在推送新的视图控制器...

      您可以轻松地继承 UIStoryboardSegue 来创建自己的动画。在您的情况下,您将向下更改源视图控制器视图的位置并应用(和动画)目标视图控制器视图的变换。动画本身就像任何其他动画一样。

      如果两个视图都在同一个视图控制器内...

      只做两个动画。您可以使用 UIView 动画轻松地同时完成它们,就像这样

      view2.transform = CGAffineTransformMakeScale(0.1, 0.1); // the "from" value
      [UIView animateWithDuration:2.0 // animate for 2 seconds
                       animations:^{
          view1.center = view1.center + theDistanceItShouldMoveDown;
          view2.transform = CGAffineTransformIdentity; // no scale
      }];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-24
        • 2012-07-02
        相关资源
        最近更新 更多