如何使UIScrollView在NSLayoutConstraint中适合其父框架?

时间:2015-12-15 08:47:40

标签: ios uiscrollview nslayoutconstraint

我在xib文件中创建了一个UIScrollView,其中包含一些子视图和约束。

然后以实际方式将其添加到视图中。

    NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.scrollView = arr[0];
[self.view addSubview:self.scrollView];

self.scrollView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);

scrollView会在视图中添加,但它的框架或contentSize总是错误的,我尝试重置其contentSize但是没有用。

它总是可以水平滚动。我希望它像UIView一样调整大小以适应其父框架,希望有人可以帮我解决它。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您不想使用故事板,可以通过编程方式为前导,尾随,顶部和底部添加约束:

[self.view addSubview:self.scrollView];

self.scrollView.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[scrollview]-|" options:0 metrics:nil views:@{@"scrollview":self.scrollView}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[scrollview]-|" options:0 metrics:nil views:@{@"scrollview":self.scrollView}]];

[self.view updateConstraints];
[self.view layoutIfNeeded];

答案 1 :(得分:0)

覆盖以下方法并在其中添加scrollview或更新框架。在视图上应用所有约束时调用此方法。

-(void)viewDidLayoutSubviews{
     [super viewDidLayoutSubviews];
}

为防止滚动,请为该方向设置内容大小0。例如

[scrollview setContentSize:CGSizeMake(500,0)];

这将只允许水平滚动。