2017-01-23 24 views
0

子VCを内部にロードする親VCがあります。次のように親VCのコードは次のとおりです。サブビューは表示されますが、スーパービューフレームの外側にあるフレーム

self.draggerViewController = [[DraggerViewController alloc] initWithSuperView:self.view]; 

そして、次のようにVCがある子供のコード:このコードで

- (instancetype)initWithSuperView:(UIView*)superView { 
    self = [super init]; 

    if (self) { 
     self.superView = superView; 

     [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 
     [superView addSubview:self.view]; 

     [superView addConstraint:[NSLayoutConstraint constraintWithItem:superView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; 

     [superView addConstraint:[NSLayoutConstraint constraintWithItem:superView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]]; 

     self.constraintDraggerAttributeBottom = [NSLayoutConstraint constraintWithItem:superView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; 
     [superView addConstraint:self.constraintDraggerAttributeBottom]; 
    } 

    return self; 
} 

、サブビューは、親ビューに表示され、制約が正しく適用されています先頭と末尾が0の親ビューの下部に配置されます。ただし、ビューの実際のフレームは親ビューの外側です。

つまり、親ビューの下部にサブビューが表示されますが、このサブビューのフレームはframe =(0-315; 768 35)です。

'clipToBounds'を 'YES'に設定すると、ビューは実際のフレームに配置されますが、制約は正しく適用されません。

この子VCを、制約を使用したい位置で親VCのビュー内に配置するにはどうすればよいですか?

ありがとうございました!

答えて

1

OK、どのような恥...

[superView addConstraint:[NSLayoutConstraint constraintWithItem:superView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:1 constant:0]]; 

...私は、ビューの高さ制約を忘れた...

をそれを得ました皆さん、ありがとうございました!

0

これを試してみてください:

superView.insertSubview(self.view, at: self. superView.subviews.count) 
+0

同じ問題...ここで何が起こっているのか分かりません... –

関連する問題