トランジション、ListView、リスト項目をタップして詳細ビューに展開する、またはリストにピンチして詳細ビューに展開するなどの IOS Weather APP を実装したいと考えています。
左右のトランジションをスライドします。どうすればそれを実装できるか教えてください。
前もって感謝します。
トランジション、ListView、リスト項目をタップして詳細ビューに展開する、またはリストにピンチして詳細ビューに展開するなどの IOS Weather APP を実装したいと考えています。
左右のトランジションをスライドします。どうすればそれを実装できるか教えてください。
前もって感謝します。
これは、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
またはUICollectionViewDelegate
didSelect メソッドで)、その特定のフレームでアニメーション化できるようにアニメーターに指示し、ナビゲーション ロジックに応じて 'push'、'pop'、または 'presentViewController' を呼び出します。
これは、移行中の API を使用して確実に実現できます。
このプロジェクトをチェックしてください。役立つと思います。
https://github.com/chefnobody/Colors
Ash Furrow @ Teehan + Lax: http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/からのこの例を使用して、いくつかの変更を加えてそれを行うことができました。
この例を拡張してピンチ/プル テーブル ビュー セル分離アニメーションを取得するには、選択された (またはピンチ ジェスチャに関連して「選択された」) テーブル ビュー セルを識別する必要があります。次に、-animateTransition:
上記の実際のテーブル ビュー セルをアニメーション化します。選択したセルの下が表示されなくなり、詳細ビューコントローラーが表示されます.また、(「ポップ」中に)どのセルが選択されるかを知る必要がある詳細からテーブルビューに戻ることを忘れないでください(スクロールしてビューに戻ります)まだ表示されていない場合)、それを囲むセルを画面外からアニメーション化し、表示に戻します。
異なる都市間のスワイプ操作に関しては、InteractionController
そこで遷移を処理する別のものを実装します。繰り返しになりますが、おそらく Furrow の例に従って、それをうまくやってのける方法を理解することができます。