web-dev-qa-db-ja.com

利点、問題、別のUIWindowをiOSアプリに追加する例?

最近、iOSアプリにはUIWindowが1つしかないという事実に疑問を抱いてきました。別のUIWindowを作成して画面に配置することは問題ではないようです。

私の質問はちょっと曖昧ですが、私は興味があります:

  • 他の方法ではできない2番目のUIWindowで何を達成できる可能性がありますか?
  • 複数のUIWindowインスタンスを使用すると何が問題になる可能性がありますか?
  • 私は、人々が2番目のUIWindowを使用して、iPhoneでビューのようなポップオーバーを表示することを見てきました。これは良い方法ですか?どうして?何故なの?
  • 別のUIWindowを持つことが完全に理にかなっている他の例はありますか?

私が何かを見逃しているわけではありません。別のUIWindowインスタンスを作成する必要性を感じたことはありませんが、気付いていないすばらしいことを実行できるかもしれません。 :-)

この問題の解決に役立つことを期待しています。現在表示されているものの上に「カバービュー」を追加する必要があります。既に1つ以上のモーダルコントローラーが提示されている場合にも機能するはずです。 UIViewをルートコントローラーのビューに追加すると、モーダルコントローラーが最上位になり、ポップオーバーコントローラーも最上位になります。カバービューをモーダルモードで表示し、既にモーダルコントローラーが存在する場合、画面の一部のみがカバーされます。

86
Krumelur

UIWindowは、システムキーボードなどの他のUI要素の上に浮くことができます。

最後の段落に対処するには:メインウィンドウと同じフレームでUIWindowを作成します。 windowLevelプロパティをUIWindowLevelStatusBarに設定します。 hiddenプロパティをNOに設定します。

23
rob mayoff

Robの回答から始めて、私は少し遊んで、このトピックに関する情報を取得しようとしている他の人のためにいくつかのメモを書きたいと思います。

  • 別のUIWindowを追加してもまったく問題ありません。 1つとmakeKeyAndVisibleを作成するだけです。できた.
  • 別のウィンドウを表示して削除し、不要になったウィンドウを離します。
  • 「キー」であるウィンドウは、すべてのキーボード入力を受け取ります。
  • UIWindowは、モーダル、ポップオーバーなど、すべてをカバーします。素晴らしい!
  • UIWindowは常に暗黙的にポートレートです。回転しません。新しいウィンドウのルートコントローラーとしてコントローラーを追加し、そのハンドルを回転させる必要があります。 (メインウィンドウと同じように)
  • ウィンドウのレベルによって、表示される「高さ」が決まります。すべてをカバーするにはUIWindowLevelStatusBarに設定します。 hiddenプロパティをNOに設定します。
  • 2番目のUIWindowを使用して、すべての上に浮かぶビューを画面に表示できます。ダミーのコントローラーを作成せずに、UIPopoverControllerに埋め込みます。
  • これは、ポップオーバーコントローラーはないが、そのようなものを模倣したいiPhoneで特に役立ちます。
  • もちろん、それはもちろん私の問題を解決しました:アプリがアクティベーションを辞めた場合、現在表示されているものの上にカバーウィンドウを追加して、iOSがアプリの現在のコンテンツのスクリーンショットを撮れないようにします。
104
Krumelur

UIWindowをよりよく理解するためのAppleのドキュメントhttps://developer.Apple.com/library/archive/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/WindowScreenRolesinApp/WindowScreenRolesinApp.html

UIWindowの複数のインスタンスを使用する特定の理由は、アプリ画面をビデオ録画する必要がある場合です。最終的な録画済みビデオに特定の要素(録画ボタン、録画ステータスなど)を含めたくない場合があります。そのため、これらの要素を別のUIWindowに配置できます。

実際、ReplayKitを使用している場合、have toはこれらの除外されたUI要素に別のUIWindowを使用します。詳細はこちら: https://medium.com/ar-tips-and-tricks/how-to-record-a-screen-capture-with-replaykit-whilst-hiding-the-hud-element- bedcca8e31e

0
Ivy Xing