1
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でこのレイヤーの両方を描画すると、このレイヤーの両方が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];

                         }];
4

2 に答える 2

1

この質問(uinavigationcontrollerおよびpushviewcontroller)に追加したタグは、新しいビューコントローラを画面にプッシュすることについて話していることを示唆していますが、説明により、両方のビューが同じビューコントローラに含まれる2つのサブビューであるように聞こえます...

新しいViewControllerをプッシュする場合...

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
}];
于 2012-07-23T20:50:36.763 に答える
1

beginAnimations/commitAnimations コード セクション内に両方のアニメーションを配置するだけです。アニメーションを同時に実行します。レイヤーを気にする必要はありません。

于 2012-07-23T17:52:25.370 に答える