問題タブ [custom-transition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
205 参照

ios7 - 向きを変更した後、IOS 7 でカスタム遷移アニメーション中にビューの座標を決定する方法は?

私の問題の簡単な要約:

iOS 7 で View Controller Transitioning API を使用して、タップすると uicollectionview のセルをフルスクリーン ビューに拡張し、閉じると元の座標に戻るカスタム トランジションを作成しています。

写真アプリや Facebook の機能に似ています。

全画面表示の表示と非表示を同じ方向に維持している限り、両方の方向でうまく機能します。

閉じる前に全画面表示で向きを変更すると失敗します。

いくつかの詳細:

collectionView を含む View1 からフルスクリーン ビューである View2 に移動するために、navigationController を使用しています。

View1 は UINavigationControllerDelegate プロトコルを実装し、navigationController:animationControllerForOperation:fromViewController:toViewController: メソッドで、操作が「プッシュ」の場合にアニメーションを開始する必要がある座標を計算し、同様に、操作が「プッシュ」の場合にアニメーションを終了する必要がある座標を計算します。アニメーションを行う UIViewControllerAnimatedTransitioning クラスを返す前の「ポップ」です。

次の方法で、View1 の座標系で開始フレームと終了フレームを計算します。

選択したセルを取得します。

次の方法で、セルのフレームを View1 の座標系に変換します。

プッシュ操作とポップ操作の間で回転を一定に保つと、この計算は両方の回で同じ座標を返し、結果は期待どおりになります。アニメーションはセルのフレームから開始され、同じセルに縮小されます。

でも; プッシュ操作とポップ操作の間でデバイスを回転させると、誤った結果が得られます。ポップ中に計算された座標は、プッシュ中とまったく同じです。View1 と collectionView がまだ回転していないかのようです。したがって、アニメーションは、デバイスが回転していなかった場合にセルがあった場所で終了します。

ポップ操作中の回転の変化を考慮して、選択したセルの座標を計算するにはどうすればよいですか?

ありがとう

0 投票する
6 に答える
14748 参照

ios - 透明なモーダル UIViewController を提示する

自分でカスタム alertView (iOS7 以降用) を作成しようとしていますが、alertView のプレゼンテーションに苦労しています。

黒い背景 (アルファが 0.25f に設定) の UIViewController と、サブビューとしての alertView があります。

alertView を表示したい場合は、viewController をモーダルに表示します。

そして、ここに私のアニメーターオブジェクトがあります:

問題は、モーダル VC がバックグラウンドで表示中の VC と一緒にフェードアウトすることですが、アニメーションが終了すると、表示中の VC がバックグラウンドから削除されます。

代わりに呼び出す[transitionContext completeTransition:YES];と、プレゼンテーション VC はバックグラウンドにありますが、モーダル VC はアニメーションの最後に削除されるため、'NO' を送信するとコンテキストがプレゼンテーションをキャンセルすると思います。

スナップショットを作成してモーダル VC のビューの背景として設定することなく、提示する VC をバックグラウンドで維持する方法はありますか?

0 投票する
3 に答える
5893 参照

objective-c - iOS 8 カスタム ビュー コントローラー プレゼンテーション: アニメーション中に表示される VC のサイズを変更する

Google Now カードが有効になっているときの iOS 用 Google アプリのレイアウトに似た、一連のカードをテーブル ビューに表示するアプリを作成しています。ユーザーがカードをタップすると、新しいビュー コントローラーへのカスタム トランジションが発生するはずです。これは、基本的にカードが大きくなり、ほとんど画面いっぱいになり、詳細が表示されます。カスタム トランジション自体は、カードが上向きにアニメーション化され、カードを保持する新しいビュー コントローラーである最終的なサイズと位置に達するまでサイズが大きくなるように見えるはずです。

カスタムView Controllerトランジションを使用してこれにアプローチしようとしています。カードがタップされると、カスタム ビュー コントローラー トランジションを で開始しUIModalPresentationCustom、トランジション デリゲートを設定します。トランジション デリゲートは、それ自体がカスタム アニメーターとカスタム UIPresentationController を提供します。ではanimateTransition:、新しいビュー コントローラーのビューをコンテナー ビューに追加し、最初にフレームをカードのフレームに設定します(そのため、カードがまだそこにあり、変更されていないように見えます)。次に、提示されたビューのフレームのサイズが大きくなり、位置が変化して最終的な位置に移動するアニメーションを実行しようとしました。

ここに、上記で説明したことを行うコードの一部を示します。短く簡潔にしようとしていますが、必要に応じてさらに情報を提供できます。

移行デリゲート

カスタム UIPresentationController

私が見つけているのは、新しいビューがアニメーションの開始直後に最終的なサイズに自動的に設定されていることです。その後、アニメーションは上向きにアニメーション化された新しいビューです。UIPresentationController のドキュメントによると、ブレークポイントを使用frameOfPresentedViewInContainerViewして、呼び出し中に呼び出されていることに気付きました[transitionContext.containerView addSubview:toView]。これは、おそらくこれが起こっている理由を説明しています。「アニメーションの最後に提示されたビューに割り当てるフレーム四角形」を返しますframeOfPresentedViewInContainerView

ただし、どのように進めるか、またはそれが本当に可能かどうかはわかりません。私が見たカスタム ビュー コントローラー遷移のすべての例では、提示されたビュー コントローラーの最終的なサイズはすべて静的で、アニメーション中は変化しませんでした。アニメーション中に提示されたビューのサイズを変更してカスタム ビュー コントローラーの遷移を実行する方法はありますか、または別の方法でこれにアプローチする必要がありますか?

0 投票する
2 に答える
1557 参照

ios - iOS および Objective C の循環遷移 (マスク)

新しいボタンを使用して、背景とトランジションを新しいビューにブレンドする円形マスクを簡単に作成するにはどうすればよいでしょうか? ここで例を参照してください (赤い惑星がトリガーされるのを見てください):ここに画像の説明を入力

0 投票する
0 に答える
181 参照

uikit - UIModalPresentationCurrentContext とカスタム遷移を混在させることはできますか?

それぞれ独自のビュー コントローラーである 2 つの項目を含むユーザー インターフェイスを備えたアプリがあります。項目の 1 つを変更することにした場合、私はpresentViewController:animated:completion:withを使用しUIModalPresentationCurrentContextて、変更する項目だけにピッカーをモ​​ーダルに表示します。ビュー コントローラーはプレゼンテーション コンテキストを定義するように設定されているため、ピッカーがそのビュー コントローラーのみをカバーするだけでなく、それがpresentingViewControllerそのアイテムの 1 つであることも保証されるため、アイテムの選択によってトリガーされるアンワインド セグエはそのビュー コントローラーを通過しますも、アイテムを変更します。

これはうまく機能しますが、カスタム (できればインタラクティブな) トランジションを使用して実行したいことを除けば. それを達成するために、ピッカーtransitioningDelegateを実装するカスタム オブジェクトに設定しようとしましたUIViewControllerTransitioningDelegate。ただし、ルートビューコントローラーを無視して表示transitioningDelegateする を使用しない限り、 は無視されるため、この配置全体が壊れます。UIModalPresentationCustomdefinesPresentationContext

プレゼンテーション コンテキストを尊重するカスタム トランジションでモーダル ビュー コントローラーを表示する方法はありますか? それとも、これを行う別の方法を見つける必要がありますか?

0 投票する
4 に答える
7832 参照

ios - Twitter のようなすべてのビュー コントローラーで異なる色のナビゲーション バー (setbartintcolor を使用しない)

下の画像でわかるように、Twitter は、プッシュされたビュー コントローラーごとに異なるナビゲーション バーの色を使用します。

私はほとんどすべて (setbackgroundimage、backgroundcolor、bartintcolor など) を試しましたが、何も機能していないようです。私が思うに、Twitter はプッシュをシミュレートするためにカスタム トランジションを使用しています。

ここに画像の説明を入力ここに画像の説明を入力

0 投票する
0 に答える
200 参照

ios - Foursquare iOS アプリで見られるように、カスタム UINavigationBar トランジションを行う方法は?

新しいフォースクエア アプリで行ったように、デフォルトの UINavigationBar トランジション アニメーションをカスタマイズする方法を知っている人はいますか? 最初のビュー コントローラーのナビゲーション バーは、デフォルトのフェードイン効果ではなく、ビュー コントローラーと共にスライドします。2 番目のビュー コントローラーのナビゲーション バーも透明に見えます。

移行途中のスクリーン ショットを次に示します。