2009-03-24 12 views
1

私は、私のカスタム動作を示すUIViewをプログラムによって構築するライブラリを持っています。このライブラリは、ビュー階層内のさまざまな場所で、さまざまなアプリケーションにドロップできます。特定の状況下では、ビューは画面の不動産を埋めるために「拡張」する必要があります。私は現在、親を持たないビューを見つけて新しいビューを作成し、そのビューのサブビューとして挿入してから、2つの間でアニメーション化されたトランジションを実行するまで、ビュー階層を歩くコードを持っています。新しいビューを終了することは、それを隠すことに過ぎず、以前の状態を復元します。iPhoneの画面を埋めるためにビューを一時的に展開する最善の方法

私には2つの質問があります。

  1. これを行うより良い方法はありますか? (特に、私はそのようなビュー階層を横切ることは本当に好きではありません)
  2. このアプローチでは、どんな悪いことが起こる可能性がありますか?たとえば、以前に表示されていたビューは、これが起こったことを知らず、したがって不当に動作する可能性があるということです。 (これは、この動作のための委任プロトコルを開発することによって、または私が現在認識していない既存のプロトコルを使用して解決できます)。

ここでの目標は、アプリケーション/ビュー/できるだけ少ないことをする、長方形を作成し、私のビューのコントローラを構築するのに足りない。

答えて

1

Andrew、私は彼がスライドアップアニメーションを望んでいないので、彼はそれをやっていないと思います。

トップレベルビューはUIWindowです。 [UIApplication sharedApplication].keyWindowを呼び出してキー(現在)ウィンドウを取得できます。 (ほぼすべてのアプリケーションには1つのウィンドウしかありません)。それ以外のビュー階層を歩くことは、まったく正当なものです。

EDIT:私はUIViewのは、あなたが後にすべての階層を歩く必要はありませんので、ビューのウィンドウにまっすぐにあなたを取得しますwindow性質を持っていることに気づきました。

悪いことに起きているように、アプリの他の部分がキーウィンドウの直接的なサブビューを追加または削除しない限り、私は実際には考えられません。別の可能性のある問題は、ビューを追加するときにテキストフィールドが最初のレスポンダである場合です。キーボードかもしれないあなたの視野の上にとどまる。

+0

あなたは簡単に缶詰のアニメーションをスキップし、あなた自身をロールバックすることができます。 –

+0

これらの回答はどちらも正確です。上記のコメントに記載されているように私の場合はモーダルビューコントローラを使用する際にまだ問題があります。 – ddoughty

1

なぜpresentModalViewControllerを呼び出さないのですか?デフォルトでは、これは画面の下からアニメートされますが、アニメーションオプションとしてNOを渡してから自分自身を制御することで、これを防ぐことができます。

これは、ビュー/コントローラ/アプリがUIの制御を別のモジュールに一時的に引き渡すために設計された方法です。

+0

短い答えは、私はそれについて知らなかったということです。 :-)見てみましょう。ありがとう。 – ddoughty

+0

お手伝いしてうれしい! :) –

+0

私の見方は小さいです。それが広告バナーまたは類似のものだと想像してください。画面を引き継ぐビューでスライドしたい。私がpresentModalViewControllerを使用するとき、モーダルビューは画面全体を表示するのではなく、ビューの不動産を取り込み、それがここでは適切ではないと思うようになります。 – ddoughty

0

ddoughty、

は、私は、ビューを拡大させるとFacebookのiPhoneアプリのように縮小する方法を示しユーチューブチュートリアルを作りました。

は、それはいくつかの助けになることを願って:How to make expanding/shrinking views on iPhone SDK

アダム

関連する問題