当我将它添加到UIViewController的滚动中时,我可以保留xib的约束吗?

时间:2017-03-16 17:52:57

标签: ios objective-c constraints xib ios-autolayout

我有一个带约束的xib,我的自动布局故事板中有一个viewController,带有一个scrollView,我添加了xib。

我的xib有约束,但是当我将xib添加到自动布局故事板时,出口会改变位置和大小,它正在失去他的约束......

我使用此函数创建xib:

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];

    if (self) {

        nibname=@"myViewXib";

        [self addSubview:
         [[[NSBundle mainBundle] loadNibNamed:@"myViewXib" owner:self options:nil] objectAtIndex:0]];
        [self setNeedsLayout];

    }
    return self;
}

这是将xib加载到viewDidLoad中的故事板中的功能:

MyViewXib *myView = [[MyViewXib alloc] initWithFrame:CGRectMake(self.scroll.frame.origin.x, self.scroll.frame.origin.y, self.scroll.frame.size.width, self.scroll.frame.size.height)];
[myView setFrame:CGRectMake(width*count++, 0, width, height)];
[self.scroll addSubview:myView];
[self.scroll layoutSubviews];

enter image description here

enter image description here

我的代码有什么问题?为什么约束不起作用?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将它放在viewDidAppear方法中,而不是在viewDidLoad方法中添加子视图代码,因为视图控制器在viewDidLoad方法中没有任何视图的确切帧。