使用UIScrollview contentSize的Autolayout约束

时间:2014-11-02 13:02:56

标签: xcode ios7 uiscrollview autolayout xcode6

UIView内有UIScrollView。我可以很容易地将高度固定到UIScrollView的框架高度。

如何添加固定到UIScrollView contentSize的约束?

谢谢!

2 个答案:

答案 0 :(得分:2)

UIScrollView具有动态约束,在运行时生成左,顶部,宽度和高度。如果将UIView放在UIScrollview中并在Interface Builder中固定Pin,则会产生错误,因为参数与Superview / Container View相关。

enter image description here

您可以尝试一些解决方法:

1-以编程方式添加UIView约束

http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/

2-在UIView子类中的initWithFrame函数中手动调整视图边界

请告诉我有关您进度的任何反馈。

答案 1 :(得分:0)

答案“以编程方式添加约束”是正确的,但对于我来说,接受它作为完整答案的细节有点亮。

我是这样做的!

  1. 删除WebView上的所有故事板约束
  2. 在故事板中添加占位符约束,以用于您将使用代码添加的约束。此步骤非常重要(并且很容易错过),否则您将收到有关冲突约束的错误。Placeholder constraint
  3. 将代码添加到webviewDidFinishLoad委托方法
  4. - 代码 -

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
    
        _scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, _headerImageView.frame.size.height + webView.scrollView.contentSize.height);
    
    
    
        _webView.translatesAutoresizingMaskIntoConstraints = NO;
    
        NSDictionary *viewsDictionary = @{@"myWebView":_webView};
    
        NSString *constraintsString = [NSString stringWithFormat:@"V:[myWebView(%i)]", (int)_scrollView.contentSize.height];
    
    
        NSArray *constraint_H = [NSLayoutConstraint constraintsWithVisualFormat:constraintsString options:0 metrics:nil views:viewsDictionary];
    
        [_webView addConstraints:constraint_H];
    
    
    }