【问题标题】:Set the content size of UIScrollview using autolayout使用自动布局设置 UIScrollview 的内容大小
【发布时间】:2013-11-12 07:49:01
【问题描述】:
我有一个非常简单的看法。这只是一个带有UISCrollView 和UIImageView 下面的视图。在UIScrollView 里面我有一个很大的UIImageView。现在我需要使用autolayout 将UIScrollview 设置为contentsize。
但我不知道我该怎么做?这是我的故事板的样子。
我尝试将UIImageView 放在UIView 中,并使UIView 成为de UIScrollView 的唯一孩子,但这也不起作用。关闭自动布局不是一个选项,因为我所有其他视图都在使用自动布局
这方面有什么帮助吗?
【问题讨论】:
标签:
ios
iphone
objective-c
uiscrollview
autolayout
【解决方案1】:
您应该设置许多约束以使其以正确的方式工作。如果我理解正确,你想要类似的东西:
View
----------------------------------
| ScrollView |
|--------------------------------|
|| ||
|| ||
|| ||
|--------------------------------|
|ImageView |
|--------------------------------|
|| ||
|--------------------------------|
----------------------------------
在这种情况下,您应该将约束设置为 Scrollview 的顶部,正好是 View 的顶部。
ImageView 的顶部是 ScrollView 的底部,ImageView 的底部是 View 的底部。
和 ScrollView 里面的东西类似。
如果你有每个需要的约束,它就会起作用。
【解决方案2】:
UIScrollView 的 contentSize 可以通过 UIScrollView 中的 NSLayoutConstraints 隐式设置。
这样做的方式(如果您希望图像视图紧贴在 UIScrollView 中)是:
UIImageView *imageView = ...
UIScrollView *scrollView = ...
NSDictionary *viewsDictionary = @{@"imageView" : imageView};
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|"
options:kNilOptions
metrics:nil
views:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|"
options:kNilOptions
metrics:nil
views:viewsDictionary]];
contentSize 将等于 UIImageView 的大小。
显然,放置 UIScrollView 与在其子视图中放置任何其他视图相同。
【解决方案3】:
例如,我通过在 scrollView 中创建此类约束来使用边界视图:
H:|[borderView(400)]|
V:|[borderView(600)]|
也许你可以使用你的 UIImageView 作为边框视图。