3

私は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メソッドが正しいフレーム情報を返すことに気付きましたが、フレームの変更ごとに呼び出されるため、ここでサブビューを作成できません(スクロールしたとき)

4

1 に答える 1