【问题标题】:Detect a UIScrollView's height dynamically动态检测 UIScrollView 的高度
【发布时间】:2016-01-19 07:19:56
【问题描述】:

我在检测 UIScrollView 高度时遇到了真正的问题。我搜索了很多,找到了这个解决方案:

所以我从Content View 拖到View 并制作了Equal Height。但我不为我工作。

我也尝试根据其中的元素高度计算scrollView高度,但我认为这不是正确的方法。

如何动态设置 UIScrollView 高度?正确的做法是什么?

【问题讨论】:

  • 你想在滚动视图中添加什么?你想在里面显示一些文本吗?
  • @BharathVankireddy 有很多 UITables、UIViews、UILabels 等。
  • 您是否考虑过将所有元素直接放置在滚动视图中?是否有充分的理由拥有内容视图?

标签: ios swift uiscrollview autolayout


【解决方案1】:

你的ScrollView 应该像这样添加一个ContentView

选择您的scrollView 并在尺寸检查器底部,设置宽度如下:

有关如何在 Interface Builder 中处理 scrollView 的更多详细信息,您可以查看此 AppleDoc Working with Scroll Views

希望对您有所帮助!

【讨论】:

  • 它会自动改变高度吗?我做到了,但没有任何反应
【解决方案2】:

设置scrollView 高度的唯一方法是计算添加到滚动视图的单个对象的高度。

以编程方式计算每个 UI 对象的高度,最后将内容高度设置为滚动视图。

[scView setContentSize:CGSizeMake(300, height)];

在上面一行中,'height' 只不过是计算的所有 UI 对象的所有高度的总和。

【讨论】:

    【解决方案3】:

    通过执行以下操作,我能够根据里面的内容实现具有自动高度的 UIScrollView。

    1. 将滚动视图添加到主视图。
    2. 在此容器滚动视图中添加一个 ContentView。
    3. 在此内容中给予适当的约束 查看容器滚动视图及其内部 UI 组件。请注意,你不应该给固定高度 内容视图。内容视图的约束应该增加 根据里面的UI Components
    4. 这可能会给你一个布局 警告为“明确......”。要解决此问题,请在内容视图和滚动视图之间提供“等高”约束关系

    尝试上述步骤,这将解决您的问题:)

    【讨论】:

      【解决方案4】:

      您想通过自动布局在您的 UIScrollView 中添加项目(UIView、UILabel...)吗?如果是这样,只需将它们放入其中并为它们创建正确的约束。

      关键是 UIScrollView 中的每个项目对其 superview 都有顶部、前导、底部和尾侧约束。最重要的是确保您的 UIScrollView 对其子项具有顶部、前导、底部和尾部的后代约束。它将为您计算正确的滚动视图内容高度。

      在您的解决方案中,如果您的 contentView 的帧为零,它不会为您提供滚动视图的任何高度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-26
        • 2013-12-19
        • 2018-09-21
        • 2018-06-06
        • 1970-01-01
        • 2016-08-17
        • 2013-04-28
        • 2017-12-17
        相关资源
        最近更新 更多