2

346 ピクセルの高さで定義されたスクロール ビューがある nib からビュー コントローラーをロードしました。しかし、私がするとき:

int h = scrollView.frame.size.height;
NSLog(@"%d",h);

viewDidLoad で 375 を取得します。

高さに応じてスクロールビューのコンテンツをプログラムで設定できるように、viewDidLoad(または別の同様のメソッド)で適切な高さが必要です(垂直方向に「オーバーフロー」させず、水平方向にのみページングしたくない)。

スクロール ビューでは、すべての自動サイズ変更行がオンになっています。(すべて真っ赤)。奇妙なことに、ビューが読み込まれると、スクロール ビューの高さが (適切な) 375 ピクセルではなく 346 ピクセルであることがわかります。

私はここで行き止まりにあり、ビューの適切なサイズを取得する方法は非常に役立ちます。事前に感謝します。さらに情報が必要な場合は、コメントしてください。

編集:私がそれを解決した方法は、0.1秒のタイマーをviewDidLoadに入れることでした。そのタイマーが呼び出されたときに、必要な作業を行いました。これはちょっとしたハックですが、他のアドバイスをいただければ幸いです。

4

2 に答える 2

4

追加のレイアウト タイプの計算を実行する正しい場所は、通常、viewWillLayoutSubviewsまたはviewDidLayoutSubviewsです。 ドキュメントはこちら。また、これは「ビューの回転の処理」のセクションから:

このviewWillLayoutSubviewsメソッドは、ビューがその親によってサイズ変更および配置された後にも呼び出されます。向きの変更が発生したときにView Controllerが表示されていない場合、回転メソッドは呼び出されません。ただし、viewWillLayoutSubviewsビューが表示されるとメソッドが呼び出されます。

于 2013-06-19T19:54:04.187 に答える