4

これが私の質問の実例です:

図

同じ画像を表示する ViewControllers A & BにStarImageViewがありますが、その ViewController には互いに異なるフレームがあります。

ViewController A のStarImageViewがタップされると、アプリは新しい View Controller を Navigation Controller スタックにプッシュし、同時に ViewController B の最終フレームにアニメーション化します。

この動作は、iPhone の写真アプリのトランジションに似ています。


今のやり方

ViewController Aの初期StarImageViewのフレームと画像を使用してアニメーターオブジェクトの一時UIImageViewを初期化し、四角形(ViewController BのStarImageViewCGRectMake(0, 60+44, containerView.bounds.size.width, containerView.bounds.size.width)のフレーム)をハードコーディングして最終フレームにアニメーション化し、スーパービューから一時UIImageViewを削除しますアニメーション完了ブロック。


代わりにどのようにやりたいか

プロジェクトは、自動レイアウトが有効なストーリーボードで作成されます。私がやりたいことは、上記のようにハードコーディングするのではなく、遷移中に ViewController B でStarImageViewのフレームを取得することです。ViewContorller のライフサイクルが原因で、まだ初期化されていないため、アニメーター オブジェクトの ViewController B のサブビューを参照できません。

このような状況に対する他の解決策やベスト プラクティスはありますか? 前もって感謝します!

PS私はthisthis、およびthisを見てきましたが、答えはありません。

4

1 に答える 1

0

[toViewController.view layoutIfNeeded];

于 2015-08-13T06:28:03.950 に答える