0

私は単一のビュー アプリケーションを持っています (iOS テンプレートから作成され、特別なことは何もありません)

1 つのボタンがあります。

- (IBAction)buttonWasTapped:(id)sender {
    // Toggle status bar hidden property
    BOOL hidden = [[UIApplication sharedApplication] isStatusBarHidden];
    [[UIApplication sharedApplication] setStatusBarHidden:!hidden withAnimation:UIStatusBarAnimationFade];
}

最初にアプリをロードします。

ここに画像の説明を入力

次に、ボタンを押します。

ここに画像の説明を入力

これで問題ありません。 上部の黒いスペースを回避できます。次にもう一度ボタンをタップし、横向きに回転します。その後、もう一度ボタンをタップします。このように見えるはずです。

ここに画像の説明を入力

最後に回転して縦に戻し、ボタンをタップします。

ここに画像の説明を入力

要約すると、問題は次のとおりです。

  1. ステータスバーを隠す
  2. 向きを入れ替える (縦向きまたは横向き)
  3. ステータスバーを表示する
  4. ステータス バーが UI を覆う

私は本当にハックな回避策を作りましたが、私はそれが好きではなく、Appleがそれを整理すれば壊れると確信しています.

  • 誰もこれを見たことがありますか?
  • より良い解決策はありますか?
4

2 に答える 2

2

私は同様の問題に直面しました。私の修正はオンで方向に回転します。バーを再表示し、それを非表示にします。ビューは使用可能なすべてのスペースを占有し、ステータス バーが含まれていたスペースも埋めます。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // A workaround to stop the rotation filling up the status bar space
    // Show the status bar and then hide it straight after, (there is no flicker)
    if ([[UIApplication sharedApplication] isStatusBarHidden]) 
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

        double delayInSeconds = 0.0;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
        });
    }

    if (!_controlsHidden) [self resetFadeoutTimer];

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
于 2012-06-06T12:43:05.767 に答える
1

XcodeのInterfaceBuilder(グラフィカルなxibエディター)を使用して、検索バーでビューを定義しましたか?その場合は、Interface Builderでビューを選択し、右側のサイドバーで属性インスペクターを選択します(アイコンはスライダーのように見えます)。[シミュレートされたメトリック]セクションで、ステータスバーの値を[なし]に設定します。この場合は灰色で、アプリの外観をシミュレートします。これにより、ステータスバーに対応するようにビューのサイズが調整されます。

于 2012-06-06T13:57:39.643 に答える