2

I'm trying to add a View created through a xib File into a UIScrollview.

The View looks like that: View setup in Interface Builder

What I get is: The View added to a UIScrollview in code

The Code I use to add the View to the UIScrollview (which is setup in Storyboard) is:

Initialisation code:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"SpuelungProtokollView" owner:self options:nil];
HPSpuelungProtokollView * spuelungProtokollView = [subviewArray objectAtIndex:0];
HPSpuelung * vInfo = pInfo;

// setup Infos
// ... this part is not related to the problem ...

[self setContentView:spuelungProtokollView];

and then I do the following in viewDidLoad::

[[self scrollView] setContentSize:[[self contentView] frame].size];
[[self scrollView] addSubview:[self contentView]];
[[self contentView] layoutIfNeeded];

Has anybody had a similar Problem - know how to properly add a (properly constraint) UIView to UIScrollview?

Thanks in Advance for Answers!

EDIT

A strange Side Effect is: the View loads correctly if I put the view Hirarchy is created in viewDidAppear:

4

2 に答える 2

1

ビューを初期化するために実装する必要awakeFromNib:があります。そうでない場合は、適切にセットアップされていない可能性があります。

NSNibAwaking プロトコル リファレンス:この非公式のプロトコルは、1 つのメソッド awakeFromNib で構成されます。オブジェクトが Interface Builder アーカイブ (nib ファイル) からロードされた後、クラスはこのメソッドを実装して状態情報を初期化できます。

したがって、実装には次のようなものが必要だと思います。

- (void)awakeFromNib {
    [[self scrollView] setContentSize:[[self contentView] frame].size];
    [[self scrollView] addSubview:[self contentView]];
    [[self contentView] layoutIfNeeded];
    return;
}

awakeFromNibNSNibAwaking非公式プロトコルの一部であるという点で、実際には特別です (基本的には、オブジェクトがそれに準拠する必要がないことを意味します)。オブジェクトが nib ファイル (.xib) からロードされると、awakeFromNib メソッドが実装されている限り、すべてのアウトレットが接続されると、このメッセージが送信されます。

于 2013-01-14T14:20:11.970 に答える
1

問題を解決できました-カスタムビューの自動サイズ変更マスクをそのinitWithCoder:ように設定する必要がありました:

- (id) initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    }

    return self;
}

これが他の誰かに役立つことを願っています....

于 2013-01-14T15:46:07.800 に答える