0

タイトルで説明されているように、View ControllerのloadViewでプログラムでUIScrollViewを作成しています。これを、self.viewに設定します。

_pagingScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = _pagingScrollView;

loadViewの最後で_pagingScrollView.frameを調べると、次のようになります。

{{0,0}、{320,480}}。

ただし、scrollViewDidScrollデリゲート内の同じプロパティを検査すると、次のように切り替わります。

{{0,0}、{320,367}}

scrollViewを割り当て/初期化して、タブ/ナビゲーションバーを最初から考慮に入れ、367を表示するようにするにはどうすればよいですか?367を単純にハードコーディングできることはわかっていますが、ここで何が起こっているのか、なぜ1つの値で始まり、その後変化するのかを知りたいと思います。

4

2 に答える 2

1

UIScrollView既知の境界で を作成しない理由

_pagingScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,387];

UIScreenまたは、境界から TabBar または NavBar の高さを減算します

于 2012-08-15T16:51:25.177 に答える
0

あなたが見ている問題は、ウィンドウ全体 (320,480) を参照し、その中の Nav/Tab ビューを気にしない [UIScreen mainscreen] の使用が原因であると思います。

それを使用する代わりに、applicationFrame メソッドを使用することをお勧めします。

この関連記事を参照してください --実際の [UIScreen mainScreen] フレーム サイズを取得する方法は?

さらに、VC の superView/superViewController が設定されている場合、MainScreen は引き続きウィンドウ全体のみを参照し、 nav/tabs などのサブ ビュー コントローラーを考慮しないため、それらを使用してより関連性の高いサイズ情報を取得できます。

于 2012-08-15T16:50:58.677 に答える