通話中のステータス バーが切り替えられたときに、またはにview
関連付けられているがどのように反応するかを理解しようとしています。
私の問題は、それらの動作が異なるように見え、これが副作用を引き起こすことです.UITabBarController
UINavigationController
UIViewController
上記の 3 つのタイプのウィンドウのルート ビュー コントローラーを変更するプロジェクトを作成し、の をダンプしdescription
てview
フレーム座標を取得します。
UIViewController
inCall ステータスOFF :
UIView: 0x4e2a1f0; フレーム = (0 20; 320 460); 自動サイズ変更 = W+H; ....オン
UIView: 0x4e2a1f0; フレーム = (0 40; 320 440); 自動サイズ変更 = W+H; ...
これは私が理解していることです。通話中のステータスバーが表示されると、UIViewController のビューの高さが縮小して 20 を失い、y 座標が 20 から 40 に移動します。
それは最高です !UIViewController
クラシックを aUITabBarController
または aに置き換える場合も同じことが予想されますUINavigationController
が、そうではありません。
UINavigationController
InCall ステータス バーオフ
UILayoutContainerView: 0x4b35ab0; フレーム = (0 0; 320 480); 自動サイズ変更 = W+H; ..オン
UILayoutContainerView: 0x4e1b060; フレーム = (0 0; 320 480); 自動サイズ変更 = W+H; ..
その場合、UINavigationController によって処理されるビューは、通話中のステータス バーが切り替えられたときにフレーム プロパティが変更されませんか?! (どうして ? :( )
UITabBarController
オフ
UIView: 0x4b2f6a0; フレーム = (0 20; 320 460); 自動サイズ変更 = W+H; ...オン
UIView: 0x4b2f6a0; フレーム = (0 20; 320 460); 自動サイズ変更 = W+H; ...
と同じUINavigationController
: のview
はUITabBarController
、incall ステータス バーが切り替えられたときに影響を受けないようです。
incallステータスバーが表示されたときにこのサイズ変更がどのように機能するかを誰かが説明してもらえますか?
私の最終目標は、全体の上に表示され、通話中ステータスが表示されたときに適切にサイズ変更されるを表示するUIView
ことです。ただし、そのようなビューをビュー階層のどこに配置すればよいか本当にわかりません: UITabBarController のビューの子として追加すると、これは incall ステータス表示に反応しないため、私のビューも同様に反応しません: (UITabBarController