4

トランジション、ListView、リスト項目をタップして詳細ビューに展開する、またはリストにピンチして詳細ビューに展開するなどの IOS Weather APP を実装したいと考えています。

左右のトランジションをスライドします。どうすればそれを実装できるか教えてください。

前もって感謝します。

4

2 に答える 2

7

これは、iOS 7 での Apple の新しい Transitioning API について説明している、私が見つけたブログの投稿です。


短い行で、ここに手順があります

1 - コントローラーにトランジション デリゲートを設定する

カスタマイズできるトランジションは 3 種類あります。

  • UINavigationControllerプッシュ & ポップ トランジション
  • UItabBarControllerタブ変更トランジション
  • モーダルプレゼンテーションpresentViewController:animated

これら 3 つのケースはそれぞれ、独自の「遷移デリゲート」プロトコルを提供します。

  • UINavigationControllerDelegate
  • UITabBarControllerDelegate
  • UIViewControllerTransitioningDelegate

コードのどこかから、プレゼンテーションにメソッドを使用する場合:

  • pushViewController:animated:またpopViewControllerAnimated:
  • setViewControllers:animated:
  • presentViewController:animated

次に、これらのデリゲートは、アニメーションが必要な場合、私が「アニメーター」と呼んでいるものを求めます。

私が「アニメーター」と呼んでいるものは、プロトコルに準拠したオブジェクトです<UIViewControllerAnimatedTransitioning>(または<UIViewControllerInteractiveTransitioning>、ジェスチャー駆動の相互作用などのインタラクティブな遷移の場合)。これにより、アニメーションがUIViewControllers(既に多くのコードが含まれている可能性があります) から分離されます。

2 - 「アニメーター」を書く

これは、遷移のアニメーション化を担当するオブジェクトです。これは、viewController または完全に新しい NSObject にすることができます。

UINavigationController の場合、プッシュ操作とポップ操作に対して異なるアニメーターを定義できます。

3 - アニメーションに必要なプロパティをアニメーターに追加し、アニメーションをコーディングします

「アニメーター」は、カスタマイズしようとしているトランジションに応じて、さまざまなプロトコルを実装する場合があります。非インタラクティブなアニメーションの場合、これらはメソッドです:

  • - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext: アニメーションの長さを定義します

  • - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContextこれは牛肉が行くところです。上記のリンクのサンプルコードを参照してください。

  • - (void)animationEnded:(BOOL)transitionCompletedアニメーションが再生された後のクリーンアップ用。


あなたの場合、アニメータークラスにいくつかの 'origin' および 'target' プロパティを追加したいかもしれませんUIView(もちろん弱いプロパティとして!)

次に、「どの」ビューがユーザーによってタップされたかを検出すると。(UITableVIewDelegateまたはUICollectionViewDelegatedidSelect メソッドで)、その特定のフレームでアニメーション化できるようにアニメーターに指示し、ナビゲーション ロジックに応じて 'push'、'pop'、または 'presentViewController' を呼び出します。

于 2013-10-01T17:41:58.740 に答える
0

これは、移行中の API を使用して確実に実現できます。

このプロジェクトをチェックしてください。役立つと思います。

https://github.com/chefnobody/Colors

Ash Furrow @ Teehan + Lax: http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/からのこの例を使用して、いくつかの変更を加えてそれを行うことができました。

この例を拡張してピンチ/プル テーブル ビュー セル分離アニメーションを取得するには、選択された (またはピンチ ジェスチャに関連して「選択された」) テーブル ビュー セルを識別する必要があります。次に、-animateTransition:上記の実際のテーブル ビュー セルをアニメーション化します。選択したセルの下が表示されなくなり、詳細ビューコントローラーが表示されます.また、(「ポップ」中に)どのセルが選択されるかを知る必要がある詳細からテーブルビューに戻ることを忘れないでください(スクロールしてビューに戻ります)まだ表示されていない場合)、それを囲むセルを画面外からアニメーション化し、表示に戻します。

異なる都市間のスワイプ操作に関しては、InteractionControllerそこで遷移を処理する別のものを実装します。繰り返しになりますが、おそらく Furrow の例に従って、それをうまくやってのける方法を理解することができます。

于 2014-03-30T15:22:39.637 に答える