2

iPhone の 2 倍の高さのステータス バーが原因で、レイアウトに多くの問題が発生しています。私のレイアウトは、すべての UI 要素に必要なサイズを与えるように編成されており、2 倍の高さのステータス バーを処理するためにすべてのサイズを変更すると、通常の使用ではアプリのレイアウトが見苦しくなります。

ダブルハイステータスバーが表示されたときにレイアウトが画面から下に押し出されるのを処理する別の方法があるかどうか、誰かが提案できますか? 通常の使用 (2 倍の高さのステータス バーなし) では、UI はまだ見栄えが良いですか?

4

1 に答える 1

5

通常、画面サイズの変更を処理するには、自動サイズ変更ルールが非常に重要です (自動レイアウトは iOS 6 でより柔軟になります)。

これらのルールは、スーパービューのサイズの変化に応じて要素の位置とサイズがどのように変化するかを定義します。これらは一般的なルールで、上/左/下/右の余白、および幅/高さに影響しますが、ほとんどの状況でほとんどの人に有効です。

高さを短くしたビューの外観を決定し、ビューを実装するときにそれを考慮する必要があります。Autoresize がこれを処理できる場合、それはすばらしいことです。それらは、IB (ビューが選択されているときのルーラー タブの下) またはコードを介して適用できます。

view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

iOS 6 以降をターゲットにしている場合は、AutoLayout とその制約システムも使用できます。

これが適切でない場合は、ステータス バーの高さが変わったときに、必要に応じて独自の変換を実行できます。これは、次のいずれかで実行できます。

  1. これらのデリゲート メソッドを App Delegate に実装します。

    application:willChangeStatusBarFrame:
    application:didChangeStatusBarFrame:
    
  2. これらの通知の観察

    UIApplicationWillChangeStatusBarFrameNotification
    UIApplicationDidChangeStatusBarFrameNotification
    
于 2012-11-02T15:17:59.910 に答える