0

ユーザーがインターネット共有をオンにすると、上部の黒いバーが青色に変わり、幅が広くなり、これによりユーザー インターフェイスが少し下がり、いくつかの問題が発生します。アイテムが押し下げられているため、顔が奇妙に見えるようになりました。下部で切断される可能性があります。この状況に対処する方法はありますか?もしそうなら、それを助けるためのチュートリアルはありますか? ずっと探してるけど全然出てこない!

4

1 に答える 1

2

UIApplicationWillChangeStatusBarFrameNotificationステータスバーの新しいサイズをUIApplicationDidChangeStatusBarOrientationNotification知らせる通知を処理できます。必要に応じて、これを使用して UI を調整できます。ハード コーディング (40pt など) は避け、代わりに通知から新しいステータス バー フレームを取得します。

高さが必要な場合は、簡単に引き出すことができます。ステータス バー フレームでさらに複雑なことを行う必要がある場合は、画面座標から独自のビューの座標系に変換する必要があります (たとえば、フル スクリーン レイアウトのビュー コントローラーがあり、その下に配置する必要がある場合)。 :

- (void)statusBarFrameWillChangeNotification:(NSNotification *)notification
{
    NSValue *rectValue = notification.userInfo[UIApplicationStatusBarFrameUserInfoKey];

    CGRect statusBarFrame = [rectValue CGRectValue];

    // if you just need the height, you can stop here

    // otherwise convert the frame to our view's coordinate system
    UIWindow *targetWindow = self.view.window;
    // fromWindow:nil here converts from screen coordinates to the window
    CGRect statusBarFrameWindowCoords = [targetWindow convertRect:statusBarFrame
                                                       fromWindow:nil];
    CGRect frameRelativeToOurView = [self.view convertRect:statusBarFrameWindowCoords
                                                  fromView:targetWindow];

    // ...
}

座標の変換は、すべてのビュー コントローラーがデフォルトで全画面レイアウトになっている iOS 7 で特に重要になります。

于 2013-08-29T11:31:20.687 に答える