質問

ビューコントローラのカスタムボタンを使用すると、ナビゲーションコントローラのheirarchyのカスタムボタンがあります。これを押すと、表示ビューコントローラが表示されます。

View ControllerのクローズをアニメートするためにUiviewのtransformプロパティを使用します。それは動作しますが、 `POPViewControlLernimated:yes 'を使った場合、私のカスタム変換も機能しますが、アニメーションのデフォルトの左スライドはまだあります。

popViewControllerAnimated:NOを設定した場合は、まったくアニメートしません。

CATransitionpopViewControllerAnimatedに設定されている場合に機能するNOを使用していますが、パブリックAPIの一部である「ズーム」効果はありません。カスタムフィルタもiPhone、OS Xのみで利用できません。

だから私の質問は次のとおりです。

1)デフォルトの遷移の左スライドを取り外す方法はまだtransformを使用してカスタムアニメーションを持っていますか?

2)CATransitionのカスタムフィルタを使用する方法は?

3)ズーム効果のためにプライベートAPIを使用する場合、拒絶ビンで私のアプリを投げますか?

誰もが見落としている解決策を持っていますか?

役に立ちましたか?

解決

あなたが説明するものと似たものをやりました、すなわちUinavigationControllerでのPOPとプッシュのデフォルトのアニメーションを変更しました。

アイデアは、オブジェクトのデフォルトのアニメーションを無効にして、それを自分のアニメーションに置き換えることです。 UinavigationControllerに新しいカテゴリを作成し、以下のものと同様の機能を使用しました。

 - (void) altAnimatePopViewControllerAnimated:(BOOL)animated
 {
[CATransaction begin];

CATransition *transition;
transition = [CATransition animation];
transition.type = kCATransitionPush;          // Use any animation type and subtype you like
transition.subtype = kCATransitionFromTop;
transition.duration = 0.3;

CATransition *fadeTrans = [CATransition animation];
fadeTrans.type = kCATransitionFade;
fadeTrans.duration = 0.3;


[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];

[[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
[[[[self.view subviews] objectAtIndex:1] layer] addAnimation:fadeTrans forKey:nil];



[self  popViewControllerAnimated:YES];
[CATransaction commit];
   }
.

コードを使用するためだけにコード

   [self.navigationController altAnimatePopViewControllerAnimated:YES];
.

プッシュをするために、別の同様の機能を作成し、アニメーションを逆にしてください。

完璧ではありませんが機能します。異なるアニメーションタイプを選択すると、ナビゲーションバー/コントローラを作成するためにナビゲーションバー/コントローラを作成する別のサブビューで再生されます。

私のかなり白を迎えましたので、それを賢く使ってください:)

*******

を編集

プッシュトランジションをこれで置き換えてみてください(自分で試してみなかった):

  CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
  scale.duration = duration;
  scale.values = [NSArray arrayWithObjects:[NSNumber numberWithFloat:.5f],
              [NSNumber numberWithFloat:1.2f],
              [NSNumber numberWithFloat:.85f],
              [NSNumber numberWithFloat:1.f],
              nil];
.

これはポップインをするでしょう、すなわちviewは正しいサイズに落ち着く前に大きくなるでしょう。アニメーションの曲線を制御するために配列内の値で再生します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top