私はuiscrollviewをサブクラス化し、initWithCoderを使用してすべてのサブビューでuiscrollviewを準備しました。私はそれを設定するために以下のコードを使用しました:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
NSLog(@"%f", self.frame.size.height);
self.contentSize = CGSizeMake(5000, self.frame.size.height);
labelContainerView = [[UIView alloc] init];
labelContainerView.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height/2);
labelContainerView.backgroundColor = [UIColor yellowColor];
[self addSubview:labelContainerView];
}
ただし、self.frameプロパティは常に0の値を返すため、これは失敗し続けます。ストーリーボードを使用してスクロールビューのフレームの高さを調整したいので、self.frameプロパティを使用することは非常に重要です。
ストーリーボードを使用する代わりにxibファイルを使用して同じことを試しましたが、正常に機能します。しかし、私のプロジェクトでは、xibファイルを使用したくありません。
ストーリーボードを使用するときにinitWithCoder:メソッドで0の値を取得する理由を誰かが説明してくれると、本当に素晴らしいでしょう。ストーリーボードを使用している場合、これを実現する方法は?
PS:layoutSubviewsメソッドが正しいフレーム情報を返すことに気付きましたが、フレームの変更ごとに呼び出されるため、ここでサブビューを作成できません(スクロールしたとき)