【问题标题】:Set the content size of UIScrollview using autolayout使用自动布局设置 UIScrollview 的内容大小
【发布时间】:2013-11-12 07:49:01
【问题描述】:

我有一个非常简单的看法。这只是一个带有UISCrollViewUIImageView 下面的视图。在UIScrollView 里面我有一个很大的UIImageView。现在我需要使用autolayoutUIScrollview 设置为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 作为边框视图。

      【讨论】:

        猜你喜欢
        • 2013-06-24
        • 2013-07-26
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多