2011-01-29 13 views
2

高さ346ピクセルのスクロールビューを持つペンからペンをロードしました。しかし私が行うとき:iOS:viewDidLoadでビューの高さが正しく設定されていません

私はのviewDidLoadで適切な高さ(または他の類似の方法)を必要とする375

を得るのviewDidLoadで

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

私はプログラム的に応じて、スクロールビューの内容を設定することができるよう、高さ(垂直方向に「オーバーフロー」したくない、水平方向にしかページしない)。

スクロールビューには、1つ1つの自動サイズ変更ラインがオンになっています。 (すべて明るい赤色)。不思議なことに、ビューが読み込まれると、スクロールビューは(適切な)346ピクセルではなく375ピクセルなので、viewDidLoadとビューの表示の間のどこか適切な値に変更する必要があります。

私はここで死んでおり、ビューの適切なサイズを得る方法は非常に有用です。おかげさまで、ありがとうございました、そして、あなたがもっと多くの情報を必要とするならば、ただコメントしてください

私がそれを解決したのは、0.1秒間タイマーをviewDidLoadに入れて、タイマーが呼び出されたときに、私がする必要があった作業でした。これはハックのビットですが、他のアドバイスは非常に高く評価されるでしょう。

+1

あなたは '[super viewDidLoad]'の後にそのコードを呼び出していますか? – benwong

+0

ベンウォン:いいえ、私はスーパーに電話するのを忘れていましたが、始めに追加しただけで何も変わりませんでした。私は私の編集で示したハックの問題を解決することができました。 –

+0

私たちがコードで見る高さの単位は***ではありません***ピクセルです。彼らはポイントです。このため、コードを記述してiPhone 4と通常のiPhoneで正しく表示させることができます。ちょうど将来の参照のための頭部:) –

答えて

4

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

ビューが その親によってサイズを変更して配置された後viewWillLayoutSubviews法とも呼ばれます。向きの変更が発生したときに表示コントローラが でない場合、回転方法 は呼び出されません。ただし、viewWillLayoutSubviewsメソッドは、ビューが表示されるときに と呼ばれます。

+0

ありがとうあなたの答えは、人々が今日行うべき正しいことのように見える - 私が質問したときにそのAPIは存在しなかった:D –

+0

正しい;これらのメソッドはiOS5で追加されました。プレiOS5の場合は、viewDidAppearで初期レイアウトを行うことができます。または、コントローラ用の独自のビューサブクラスを実装し、layoutSubviewをオーバーライドすることもできます。 – TomSwift

0

このlinkをご覧ください。 サブビューがスーパービュー内に配置されて配置されていません。たとえば、ビューのサイズはviewDidAppear:になります。

関連する問題