0

私はストーリーボードと一緒にxcode 4.5(違いがある場合)を使用していますが、運がなくても非常に単純に見えることをしようとしています。私のストーリーボード ビューでは、ここの画像でわかるように UIView コンポーネントを配置しましたhttp://www.shopow.co.uk/assets/storyboard-view.png緑のセクションは高さ 100 の UIView です。

viewDidLoad メソッドで、次のコードを追加しました

NSLog(@"View Height: %f", self.testView.bounds.size.height);

CGRect viewFrame = self.testView.frame;
CGSize newSize = CGSizeMake(viewFrame.size.width, 300);
viewFrame.size = newSize;
self.testView.frame = viewFrame;

NSLog(@"View Height: %f", self.testView.bounds.size.height);

サイズ変更について読んだことから、緑色のセクションのサイズを 300 の高さに変更すると仮定しますが、ログ ウィンドウの出力には次のように表示されますが、これは起こりません。

2012-10-19 13:05:28.015 TableTest[54318:c07] View Height: 460.000000
2012-10-19 13:05:28.016 TableTest[54318:c07] View Height: 300.000000

初期の高さが 100 ではなく 460 であることに注意してください。これは何かを意味する可能性があります。

iOS シミュレーターは、このhttp://www.shopow.co.uk/assets/simulator-view.pngを示しています

これが期待どおりに機能していないことがわかる限り、明らかなことを見落としているに違いありません。ガイダンスをいただければ幸いです。

4

3 に答える 3

0

問題が解決するかどうかはわかりませんが、実際にはビューのサイズ変更を行う必要がありviewWillAppearますviewDidLoad

viewDidLoad文字通り、「ビューが読み込まれました」という意味です。ただし、この時点で、ペン先が期待どおりにビューを設定していない可能性があります。

テストとして、次の両方にログインしてみてviewDidLoadくださいviewWillAppear

NSLog(@ "frame:%@"、NSStringFromCGRect(self.view.frame));

どちらの方法でも、異なる結果が得られることがわかります。ビューが設定され、表示する準備ができているため、このviewWillAppear方法は正しい可能性が高くなります。

私は個人的にInterfaceBuilderをあまり使用していません。これは、対処できる以上の頭痛の種になるためですが、ビューのサイズに影響を与える自動サイズ変更マスクまたは弾性制約が設定されている可能性がありますか?

于 2012-10-19T12:39:47.433 に答える
0

@CaptainRedmuff が言ったように、間違った方法で呼び出しています。viewDidLoadビューが読み込まれた後に呼び出されます。これは、フレームが既に設定されていることを意味します。お探しのメソッドはloadView、 asviewWillAppear:animatedであり、 のviewDidAppear:animated後に呼び出されていviewDidLoadます。

于 2012-10-19T12:43:07.607 に答える