7

次の階層を持つView Controllerがあります。

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

メソッドを使用して、ページのカールアップをアニメーション化し、と のtransitionFromView:toView:duration:options:completion:間で交換しています。現在の段階的なビューは画面の大部分をカバーするだけで、下部に UIToolbar があります。トランジションを使用すると、関連する 2 つのビューだけでなく、ルート ビュー全体 (ツールバーを含む) がアニメーション化されます。presentViewstagedViewUIViewAnimationOptionTransitionCurlUp

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

ツールバーをそのままにして、2 つのサブビューのみをアニメーション化する方法はありますか? もしそうなら、どのように?

4

3 に答える 3

3

私はこの問題に苦労してきましたが、それを解決できる唯一の方法は、fromView を別のビューに配置することです。あなたの場合、ビュー階層は次のようになります。

UIViewController
| |
|-ビュー
   |-containerView
      |-presentView
   |-stagedView
   |-UIToolBar

fromViewパラメータは引き続き presentView を指している必要があります。お役に立てれば。

于 2011-01-30T11:44:32.237 に答える
2

このチュートリアルはそれを完全に説明しています。

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

基本的に、アニメーション化するビューとなるコンテナー ビューを作成する必要があります。それを containerView と呼ぶことができます。このコンテナー ビューには、containerView 全体を埋めることができるサブビューが既に追加されています。次に、次のビューにアニメーション化する場合は、以下のコードを使用します。現在のビューを削除して、次のビューを追加します。最後に、実際には containerView 間を移行しています。animation begin ステートメントの後に変更されているもの。

[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 に答える