【问题标题】:UIScrollview with Auto-Layout带有自动布局的 UIScrollview
【发布时间】:2015-05-22 09:49:31
【问题描述】:

我现在正在为 UIScrollView 苦苦挣扎。

“descriptionLabel”和“genresLabel”将在运行时增加高度,并且与演员的差距会增加。所以我需要这里的滚动功能来查看演员标签。

我将 contentView 的高度设置为等于 View 优先级为 250 的高度约束,并希望在需要时高度会自动增加。

实际上什么也没发生,也无法滚动。

如何在自动布局上下文中自动增加 contentView 的高度?

【问题讨论】:

  • 您的 ContentView 的高度是否会随着标签高度的增大而增大?
  • 我希望如此,因为如果其他标签高度增加,演员标签会下降。所以内容视图的高度也必须增加......
  • 请看我的回答,我刚刚为你创建了测试项目
  • 我已经在这里回答了这个问题:stackoverflow.com/questions/19036228/…
  • 也许您可以使用带有两个部分的 UITableView 和第一个部分的页脚视图。

标签: ios objective-c uiscrollview


【解决方案1】:

您必须使 ContentView 的高度灵活,以便增加它并且滚动视图的内容大小将相应增加。查看随附的屏幕截图。增加底部标签顶部约束(即 495)值,滚动视图的内容大小将自动增加。

这里是Sample Source Code

【讨论】:

  • 首先感谢截图说明。我删除了 ContentView(查看)的高度限制,但它没有任何改变。我什至在我的故事板中收到以下错误:“Scrollview has ambiguous scrollable content height”。
  • 我已经上传了示例代码请下载查看speedy.sh/7XVBk/Sample.zip
  • 我在你的项目中添加了你截图中提到的约束。结果与我的项目相同。错误:“滚动视图的可滚动内容高度不明确”所以必须为内容视图定义一个高度?
  • 在此视频中,在设计过程中,故事板中的 contentView 高度增加了。在我的设计过程中,所有标签都适合屏幕,但标签高度可能会根据内容而增加。所以如果我在内容视图上设置高度约束,这个视图的高度是固定的,对吧?
  • 如果你的标签高度会增加,那么内容高度也应该增加(因为它的超级标签视图)然后滚动视图会滚动。
【解决方案2】:

你的 Actors 标签是这个 View 的最后一个元素吗?如果是,则将 Actors: 和 asdfas... 都修复到顶部、底部和左侧。现在,对于底部将“常量”设置为“使用标准值”。还将最上面的元素(这里可能是“无网络连接!”)设置为顶部并将其“常量”设置为“使用标准值”。 试试这个,让我知道它是否有效!

我已经尝试过我告诉过你的。粘贴相同的图像。希望能帮助到你!

对于 Actors 标签约束包括:

对于 asdfas 标签约束如下图所示:

【讨论】:

  • 是的,演员标签是视图的最后一个元素,并且所有约束都设置好了。
  • 谢谢,为您提供帮助!我的错误是最后一个标签缺少底部约束。
【解决方案3】:

只需检查此link,只需编写此内容即可添加内容视图高度:-

override func viewDidLayoutSubviews()
    {
        let scrollViewBounds = scrollView.bounds
        let containerViewBounds = contentView.bounds

        var scrollViewInsets = UIEdgeInsetsZero
        scrollViewInsets.top = scrollViewBounds.size.height/2.0;
        scrollViewInsets.top -= contentView.bounds.size.height/2.0;

        scrollViewInsets.bottom = scrollViewBounds.size.height/2.0
        scrollViewInsets.bottom -= contentView.bounds.size.height/2.0;
        scrollViewInsets.bottom += 1

        scrollView.contentInset = scrollViewInsets
    }

【讨论】:

    【解决方案4】:

    很难理解你的布局有什么问题,所以我创建了一个带有 2 个不断增长的标签的测试项目,一切正常,也许你会发现你的约束有什么问题:)

    https://www.dropbox.com/s/j8269c03b32gra5/scrollview-test.zip?dl=0

    构建我的项目并单击“更多文本”按钮以将文本动态添加到滚动视图中的标签

    【讨论】:

    • 感谢测试项目。我看到您将 contentview 高度设置为大于 viewcontroller 高度。在我的正常情况下,情况不应该如此,只有当标签大小急剧增加时。所以只有当标签不适合屏幕尺寸时才应该滚动。
    • 谢谢,为您提供帮助!我的错误是最后一个标签缺少底部约束。
    【解决方案5】:

    对我来说,我需要为页面中的最后一个元素添加底部约束。更多解释here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-16
      • 2015-10-23
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多