11

UIViewController のビューを別の UIViewController のビューに追加しています (新しい UIViewController Containment API を使用)。VC のビューを別のサブビューとして追加した後、上から 20px の奇妙なマージンがあります。

ビューをログに記録しましたが、原点は 0,0 でした。ただし、ビューのスーパービューをログに記録すると、次のようになります。

<UIViewControllerWrapperView: 0x6c5e2c0; frame = (0 20; 703 748); autoresize = RM+BM; layer = <CALayer: 0x6c54190>>

明らかにフレームを 0,0 に変更できます。しかし、私はこれを行う正しい方法は何だろうと思っていますか? VC のビューのスーパービューのフレームが 0,20 なのはなぜですか? これを変更する必要がありますか、またはこの奇妙なマージンを回避するためのより良い方法はありますか?

ありがとう

4

9 に答える 9

16

ストーリーボードだけでこの問題を修正するcheck the box "Wants Full Screen"には。

ParentViewController がナビゲーション バーを表示しているため、問題が発生します。

アップルのドキュメントが言ったように:

アプリがステータス バーを表示する場合、ステータス バーの下に重ならないようにビューが縮小されます。結局のところ、ステータス バーが不透明な場合、その下にあるコンテンツを表示したり操作したりする方法はありません。ただし、アプリが半透明のステータス バーを表示する場合は、View Controller の wantFullScreenLayout プロパティの値を YES に設定して、ビューを全画面表示できるようにすることができます。ステータス バーは、ビューの上部に描画されます。

于 2013-02-28T13:17:28.290 に答える
5

問題が何であるかを発見しました。自分自身で addChildViewController: を呼び出す必要があります。したがって、封じ込めを適切に機能させるために必要な一連の呼び出しは次のとおりです。

[self addChildViewController:navVC];
[navVC didMoveToParentViewController:self];
[mainView addSubview:navVC.view];

self は親ビュー コントローラーです。navVC は、追加する子ビュー コントローラーです。mainView は、子ビュー コントローラーのビューを追加する親ビュー コントローラーのビューです。

于 2012-06-29T06:00:48.987 に答える
2

私は以下のコードを好む、私のために働く。

    [self.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
于 2013-03-13T14:55:58.497 に答える
2

最初のView Controllerロードの前に1行追加する必要があります

- (void) viewDidLoad 
{
     self.automaticallyAdjustsScrollViewInsets = NO;
     [super viewDidLoad];
}
于 2016-05-09T11:20:11.097 に答える
0

ステータスバーのプルダウンメニューを「なし」に設定しようとしても、ビューのサイズプロパティも確認してください。ハードコードされた高さの値が460、またはyの原点が20(Xcodeのグラフィカルデザイナ)になっていないことを確認してください。また、このビューを親ビュー全体に表示する場合は、プロパティで自動サイズ変更マスクがすべての側面(上、左、下、右)に固定され、おそらくストレッチにも設定されていることを確認してください。

デバッグ出力を見ると、自動サイズ変更プロパティがとにのみ設定されているように見えUIViewAutoresizingFlexibleBottomMarginますUIViewAutoresizingFlexibleRightMargin

最後に、含まれているビューで[サブビューの自動サイズ変更]チェックボックスをオンにする必要があります。

于 2012-06-28T21:17:05.673 に答える
0

私は同じ問題を抱えていましたが、IOS 9 で (インターフェイス ビルダーで) 制約を使用して解決しました。全画面表示は推奨されていないため、使用しませんでした。先頭と末尾のマージン制約を追加し、それらに定数 -20 を与えます

ここに画像の説明を入力

于 2016-02-12T08:56:59.293 に答える
0

wantsFullScreenLayout プロパティを見てください。YES に設定すると、ビューは UIStatusBar の下に拡張されます。

于 2012-11-05T05:40:52.323 に答える
-1

包含APIの経験はありませんが、Identity Inspectorでステータスバーを[なし](以下を参照)に設定することで、多くの「20単位外」の問題を解決しました。

于 2012-06-28T21:02:23.577 に答える
-9

このビューポート メタ タグを使用するだけです。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

そこに「height=device-height」を入れると、この問題が発生します。

于 2013-07-22T21:20:21.307 に答える