子视图可见,但超视图框外的框架

时间:2017-01-23 15:44:29

标签: ios constraints parent-child frame subview

我有一个父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视图中?

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,明白了......

我忘记了视图的高度限制......真可惜......

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

谢谢大家!

答案 1 :(得分:0)

试试这个:

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