myViewController.m で、 AlbumViewというカスタム UIView をサブビューとして追加しようとしています:
-(void)viewDidLoad {
AlbumView *album = [[AlbumView alloc]init];
[self.view addSubView:album];
NSLog(@"album-frame: %@",NSStringFromCGRect(album.frame));
}
NSLog は印刷中です: album-frame:{{0, 0}, {0, 0}}
AlbumView クラスには次の Xib があるため、初期化に initWithFrame: メソッドを使用していなくても、アプリをビルドして実行すると、正しいサイズで表示されます。だから私は疑問に思っていました:
- viewDidLoad (または viewDidAppear) で NSLogging を行っているときに、正しいフレーム サイズにアクセスできなかったのはなぜですか?
編集:以下は Xib クラスです - AlbumView.m
-(void)setupView{
[[NSBundle mainBundle] loadNibNamed:@"AlbumView" owner:self options:nil];
[self addSubview:self.view]; //where self.view is IBOutlet connected with the actual Xib view I posted above
}
-(id)initWithFrame:(CGRect)frame{
if((self = [super initWithFrame:frame])){
[self setupView];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if((self = [super initWithCoder:aDecoder])){
[self setupView];
}
return self;
}
- (void) awakeFromNib
{
[super awakeFromNib];
[self addSubview:self.view];
}