IOS 7のフレームプロパティに問題があります。viewDidLoad
のUIViewController
メソッドでいくつかのUIViewのサイズを変更したいのですが、int screenHeight = [[UIScreen mainScreen] bounds].size.height; [self.leftSideTableView setFrame: CGRectMake(0, 0, 320, screenHeight)];
のように変更すると高さはメソッドの最後まで好きなように設定されていますが、他のすべてのメソッドでは以前と同じです!
それの何が問題になっていますか、それともコンパイラのバグか何かですか?
ビューのサイズ変更を-viewDidLayoutSubviews:
に入れる必要があります! (ドキュメント)
ビューがまだレイアウトされていないため、ビューフレームの変更を-viewWillAppear:
または-viewDidLoad:
に配置しても機能しません。
Xibファイルでautolayout
を使用しているかどうかを確認します。 autolayout
を使用しない場合は、xibファイルでオフにします。
self.leftSideTableView
フレーム-viewWillAppear:
。
ストーリーボードファイルで自動レイアウトがアクティブになっていないことを確認してください。
オフにするには、インターフェイスビルダーのインスペクターを確認します。左端にあるページのようなアイコンをクリックします。 「Interface Builder Document」セクションで、「Use Auto Layout」のチェックを外します。
自動レイアウトを使用したIB内のビューコントローラ全体、または完全にコード内が最適です。 2つを混在させると、デバッグが困難な奇妙な動作が発生する可能性があります。
これが発生する理由はいくつかあります。まず、テーブルビューがnilでないことを確認する必要があります。プログラムで作成する場合は、フレームを設定する前にalloc/initをどこかで呼び出していることを確認する必要があります。 self.leftSideTableView
はIBOutletです。これは、アウトレットをインターフェイスオブジェクトに実際にリンクし忘れたことが原因である可能性があります。
次に、可能性は低いですが、プログラムでテーブルビューを作成して適切に初期化していますが、画面ビューの1つのサブビューとして追加するのを忘れています。