使用UIScrollview的Autolayout约束contentSize
问题描述:
我在UIScrollView
内有UIView
。我可以轻松将高度固定到UIScrollView
的框架高度。使用UIScrollview的Autolayout约束contentSize
如何添加一个约束,即引脚到UIScrollView的contentSize
而不是?
谢谢!
答
答案“以编程方式添加约束”是正确的,但对于细节我略微接受它作为完整答案。
下面是我做到的!
- 卸下的WebView
- 所有故事板约束故事板添加一个占位符约束为将要与代码添加约束。这一步非常重要(并且很容易被忽略),否则你会得到一个关于冲突约束的错误。
- 代码添加到webviewDidFinishLoad委托方法
--Code--
- (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];
}
答
UIScrollView具有动态约束,在运行时会生成左边,上边,宽度和高度。如果将UIView放在UIScrollview中并且在Interface Builder中固定了固定约束,它将生成一个错误,因为这些参数与Superview/Container View相关。
你可以尝试一些变通方法:
1-添加的UIView约束编程
http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/
2-手动调整一个UIView子类
里面initWithFrame功能视图边界请给我任何关于你的进展的反馈。
有何进展? @sayguh – carantes 2014-11-04 01:16:03