【问题标题】:UIScrollView in Storyboard not working with iOS 8 Size Classes and Autolayout故事板中的 UIScrollView 不能与 iOS 8 大小类和自动布局一起使用
【发布时间】:2014-12-31 18:16:21
【问题描述】:

所以我试图只在情节提要中创建一个UIScrollView,它允许我添加超过 VC 高度的滚动标签。这是我所做的:

  1. 创建UIScrollView,占用任意宽度任意高度VC的大小

  2. 在顶部、底部、左侧和右侧对最近邻的间距设置了约束 0

  3. 创建了一个视图,它是 UIScrollViewsubView,其宽度与任意宽度任意高度 VC 相同,但高度为 1500(因为我只希望它垂直滚动)。

  4. 将最近邻的约束设置为 0,仅用于左侧、顶部和右侧,并将高度约束设置为 1500。

  5. 我在subView的顶部和底部放了一个标签

当我在 iPhone 6 上运行该应用程序时,不会像我想要的那样垂直滚动。任何想法为什么这不起作用?提前致谢。

【问题讨论】:

    标签: ios uiscrollview ios8 autolayout size-classes


    【解决方案1】:

    要获得滚动,您必须将子视图(“内容视图”)固定到滚动视图的顶部、左侧、底部和右侧。 此外,您必须给它(给“内容视图”)一个明确的(=与滚动视图无关)高度和宽度,因为滚动视图使用这些来计算其内容大小。 在您的情况下,将宽度设置为 VC 主视图宽度,将高度设置为 1500。 当宽度或高度大于滚动视图大小时,它将滚动。

    滚动视图约束(固定到主视图)

    内容视图(固定到滚动视图 + 高度 1500,宽度=主视图宽度)+ 标签约束(例如:内容视图左上角 20 20)

    【讨论】:

    • 完美!它现在按预期工作,感谢您的帮助;图片很棒。
    • 这不再适用于 Xcode 版本 6.1.1 (6A2008a)。有没有其他人遇到过这个问题?将内容视图固定到滚动视图将导致在我对一个只有这个的简单新项目的测试中没有显示任何内容。
    • 从版本 6.1.1 (6A2008a) 开始,它运行良好,但我对我们如何选择 1500 含糊不清。这导致我的视​​图现在过度滚动:)
    • @valfer: 这里你已经固定了 1500 的高度,但是如何根据 UIScrollview 的 contensize 实现滚动。
    • 将该约束的出口连接到代码并动态设置其值(布局约束的属性常量)
    【解决方案2】:

    为了更轻松地进行可视化,我制作了一个关于如何做到这一点的视频。

    Video on how to create a vertical-only scrollview in iOS

    【讨论】:

    • 太棒了!最容易理解的教程!
    【解决方案3】:

    您是否将 contentsize 设置为大于屏幕本身?在你的情况下,只是高度更大。

    正如 Apple 文档所说: "您必须将 contentSize 属性设置为可滚动内容的大小。这指定了可滚动区域的大小。"

    【讨论】:

    • 如上所述,滚动视图从内容视图推断其内容大小
    • 那么,我们如何仅使用storyboard来实现呢?
    【解决方案4】:

    唯一的解决方案是在滚动视图的子视图底部子视图的右侧和底部添加约束。 还要检查从上到下的所有视图是否都有适当的约束以及高度。 对于滚动视图的包装视图,为其父视图添加等宽和等高约束。

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2015-11-09
      • 2017-07-10
      • 2015-01-05
      相关资源
      最近更新 更多