【问题标题】:Resize UIView inside UIScrollView with AutoLayout for scrolling?使用 AutoLayout 调整 UIScrollView 内的 UIView 大小以进行滚动?
【发布时间】:2015-05-30 10:52:31
【问题描述】:

我的布局如下(使用 AutoLayout,iPad):

UIScrollView 的 Top、Bottom、Leading、Trailing 到 superview 的空间为 0。UIView 也有所有四个类似的约束。第二个UILabel 以编程方式将其高度设置为0(因为此处显示的文本不止一屏)。另外,从UIViewUIScrollView 也设置了这四个管脚约束。

加载 XIB 时,此 UILabel 正确显示长文本行。但是滚动不起作用。这是 iPad 上正在运行的应用程序的屏幕截图:

黄色背景设置为最外层视图,灰色背景设置为UIView。如果你仔细看屏幕截图的末尾,UILabel 的文字似乎溢出了UIView

我怀疑因为UIView 无法“捕获”其子视图的大小,UIScrollView 也无法计算其内容大小(如果其内容视图仅等于一个屏幕,则滚动条没有理由工作) .即使UILabel 显然是UIView 的子视图,为什么会发生这种情况?如果我的怀疑是正确的,如何将UIView 的高度设置为等于实际内容大小,以便我的UILabel 正确“包含”在其中?

(不能静态设置UIView 的高度、宽度)。

NB:在没有UIView 的情况下测试了XIB,并且在UIScrollView 中只有一个UILabel(带有长文本)。现在滚动工作(因为,我认为滚动视图可以计算其内容大小)。

NB2:我也尝试了this SO questionthis post 中的答案,但我的UIView 根本不会超出屏幕的尺寸。 (我只关心水平滚动)

【问题讨论】:

    标签: ios uiview uiscrollview autolayout


    【解决方案1】:

    AutoLayout 问题很难用文字来解释。我遇到了同样的问题。我在这个视频中找到了解决方案。希望这对你也有帮助。

    https://www.youtube.com/watch?v=UnQsFlMGDsI

    这个视频演示了如何创建一个 UIScrollView,它有一些 屏幕顶部的视图和屏幕底部的视图 在自动布局中。 UIScrollView 内容大小自动调整为 屏幕的大小或内容的大小以这样的方式 在较小的设备上滚动处于活动状态,在较大的设备上滚动 不活跃,因为它不是必需的。 UITextFields 下面的 UIButton 始终停留在屏幕底部,一切正常 iPhone 分辨率(iPhone 4 / 5 / 6 / 6 Plus)。

    【讨论】:

    • 太棒了!诀窍是有另一个UIView outside UIScrollView,然后从 inner UIView 设置“等高和等宽”约束外部 UIView。非常感谢!
    • 拯救了我的一天! ..对于任何对此感兴趣的人,我将内部 UIView 的“等宽”和“等高”设置为滚动视图本身。
    • 最佳答案,我遇到过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2019-12-17
    • 2011-07-17
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多