1

電話の進行中など、ステータスバーの高さがいつ変わるか知りたいです。そこで、UIApplicationDelegateに次のように入力します。

-(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame {
    NSLog(@"yup, got here");
}

実際、アプリケーションの任意の画面からシミュレーターの通話中ステータスバーを切り替えると、メッセージがコンソールに表示されますが、ダブルハイトステータスなので、別のクラスのuitextfieldまたは2を移動する必要があります。バーは特に1つの画面を台無しにしています。この画面での自動サイズ変更はうまくいきませんでした。

だから私の質問は、AppDelegateのこのメソッドから1つの画面と1つの画面のコードを実装するにはどうすればよいですか?すべての画面で起動しますが、必要なのは1つだけです。理想的には、1つのクラスのメソッドのみを起動したいと思います。

4

2 に答える 2

7

システムは同時に も転記しUIApplicationWillChangeStatusBarFrameNotificationます。View Controller にこの通知をリッスンさせます。アプリのデリゲートをいじる必要はまったくありません。

于 2010-08-06T19:57:11.843 に答える
1

Oleの答えを参考にしてください。ただし、今後の参考のために、代理人に連絡する方法は次のとおりです。

MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
于 2010-08-06T20:26:38.937 に答える