(今のところ)ビューコントローラのインスタンス化でサブビューのサイズを取得したいだけです。
[これは、前の質問で見つけた単純なケースへの縮小です。ストーリーボードのシーンのサブビューが期待どおりに動作しない理由を理解しようとしています。つまり、XIBのように、実際に画面に描画される前にサブビューのサイズを取得したいだけです]
問題を新しいクリーンなプロジェクトに凝縮するために、私はこれを行います。
- [ストーリーボードを使用する]をオンにして、新しいシングルビュープロジェクトを作成します
- 単一のUIViewをデフォルトの既存のものに追加します
MainStoryboard_iPad.storyboard
(そして、背景を緑色に変更して見やすくします-寸法をいくらか縮小する以外に、これは、シーンにドラッグするデフォルトのUIViewから行う唯一の変更です) - オプション-ナビゲーターでファイルをクリックし
ViewController.h
て、ストーリーボードフレームの下の独自のフレームに表示し、@interface
ディレクティブの下に中括弧のペアを挿入します - ストーリーボードのUIViewからcontrolキーを押しながらクリックしてドラッグし
ViewController.h
、アウトレットに名前を付けるように指示しますfirstViewFirstSubView
だから私たちは今のために持っていViewController.h
ます:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
IBOutlet UIView *firstViewFirstSubView;
}
@end
次に、このメソッドをViewController.mに追加します。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"View Controller will appear. firstViewFirstSubView: %@ ", firstViewFirstSubView);
NSLog(@"subView's dimmensions: %f by %f at %f, %f", firstViewFirstSubView.frame.size.width,
firstViewFirstSubView.frame.size.height,
firstViewFirstSubView.frame.origin.x,
firstViewFirstSubView.frame.origin.y);
}
この時点で、UIViewサブビューのサイズを取得できると期待しています。ただし、すべて0になります。
2012-11-15 15:21:00.743 StoryboardViewBounds[11132:c07] View Controller will appear. firstViewFirstSubView: <UIView: 0x9379730; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9378e40>>
2012-11-15 15:21:00.744 StoryboardViewBounds[11132:c07] subView's dimmensions: 0.000000 by 0.000000 at 0.000000, 0.000000
私は何が間違っているのですか?これは非常に簡単なように思われるので、ストーリーボードエディタで適切なスイッチをスローするか、ストーリーボードに必要なメソッドを実装するかにかかわらず、単純なものが欠けているに違いないと思います。