2016-10-09 3 views
0

UIViewのストーリーボードは、クラスがMyView(このクラスは@interface MyView : UIViewと定義されています)に設定されています。クラスMyViewiOS - サブビューの幅をparent(objective-c)と同じに設定します

、私はこのような構成を持っている:それはペン先からデザインをロード

-(void)awakeFromNib{    

    [super awakeFromNib]; 

    [[UINib nibWithNibName:@"MyNib" bundle:nil] instantiateWithOwner:self options:nil]; 

    [self addSubview:self.contentView]; 
}  

とそれにcontentViewを追加します。今、selfの幅と同じになるようにcontentViewの幅を設定するにはどうすればよいですか?私はaddSubviewメソッドの下でprogramatically制約を追加しようとしましたが、アプリケーションがクラッシュしました。

だから、どこに制約を加え、コードをどのようにすべきか?

+1

wdithを等しくするための制約は不要です。あなたはxibの中の要素に適切に制約を設定します。目の前のxibのフレームをnibメソッドから変更できます。 –

+0

インターフェイスビルダで制約を設定できるときに、なぜコードに制約を追加していますか? – Adeel

+0

@TejaNandamuriありがとう...あなたがこれを答えにすると、私はそれを受け入れます。 –

答えて

1

幅を同じにするように制約を設定する必要はありません。

xibの要素の制約をスーパービューフレームに従って並べるように設定するだけです。

そして、awakeFromNibメソッドでxibビューフレームを設定することができます。

0

xibビューのコンセントを作成して、その親ビューに応じてプログラムで表示するようにセット制約を設定できます。あなたはthisからアイデアを得るかもしれません。うまくいくはずです。

+0

私はこのアプローチを使用しましたが、クラッシュしました... awakeFromNibではクラッシュが発生するため、どこに制約を追加するべきかわかりません。 –

+0

実際に@teja Nandamuriに同意します。実際には、xibビューで制約を設定してからviewDidAppeareメソッドでviewWillAppeareの後に制約が実行されるのと同じ親ビューフレーム幅の幅で子ビューを追加できます。 –

関連する問題