【问题标题】:Disable Horizontal Scrolling of UIScrollView AutoLayout Resizable ScrollView禁用 UIScrollView AutoLayout Resizable ScrollView 的水平滚动
【发布时间】:2016-09-12 11:04:29
【问题描述】:

我有一个 UIScrollView,它会根据某些条件在运行时调整大小。现在我正确地使用了自动布局,而没有额外或更少地使用单个约束。滚动视图的第一个子视图具有前导、尾随、顶部、底部和与滚动视图相等的宽度,并且内容视图的高度由其内部内容管理,该内容也根据运行时条件而变化。现在根据我的限制,我的内容视图不应该水平滚动,因为我使用相等的宽度来滚动视图。但它正在发生。谁能建议做错了什么?这是我使用的约束图像。

注意:- 我在堆栈上看到了回答此类问题的帖子,但我的情况不同。

【问题讨论】:

    标签: ios uiscrollview autolayout ios-autolayout


    【解决方案1】:

    例如,内容UIView 的宽度应该等于UIScrollView 的超级视图的宽度,而不是UIScrollView 本身的宽度。

    【讨论】:

    • 可能是因为UIScrollView 的超级视图(故事板中的Description)的宽度大于UIScrollView。如果是这种情况,请尝试将UIScrollView 包装在UIView 容器中,并将调整大小的逻辑应用于此容器而不是滚动视图。然后将内容的宽度设置为等于这个容器视图,就像我原来的答案一样——无论如何它都不会在宽度设置为滚动视图的情况下工作。
    • 我试图将内容视图的等宽约束设置为滚动视图的超级视图,即描述视图,并且我已经使用了您上面的建议,即在描述视图中将另一个视图作为滚动视图的超级视图,但是问题是一样的。我知道问题是因为描述视图和滚动视图的大小没有像我在问题中提到的那样固定。描述视图和滚动视图的宽度会根据设备宽度而变化。在不改变这些东西的情况下,我希望内容只垂直滚动。
    • 我尝试为内容视图的宽度赋予宽度一个固定的约束。它有效,但我也不想修复内容视图的宽度。
    • 好吧,如果它们的框架发生变化,这无关紧要,只要你有宽度相等约束,你的内容视图应该总是与这个环绕视图的宽度相同,或者Description —无论您最终用作宽度参考。假设您不直接更改框架,它应该可以正常工作(我尝试过并且对我有用)。我可能会仔细检查自动布局警告的控制台输出,确保没有您意外添加的冲突约束,约束优先级是您想要的方式,等等。
    • 我没有任何警告,无论是在设计时,还是在运行时。而且我没有改变框架。我将描述视图的比例宽度设置为主视图的超级视图。在 iPhone 5 中,宽度为 300,在 iPhone 6 中,它按比例增加,内部滚动视图也因为它的前导和尾随描述视图为 0。我设计了这么多复杂的布局,一切都很好,但这个已经超出了我的能力范围.我已尝试删除所有约束并再次添加所有约束。没有任何效果。
    【解决方案2】:

    在我的例子中,当我从情节提要添加约束时,我曾经使用“约束到边距”选项。当我只添加尾随和前导而没有相对于边距问题解决时。我没有给我的 UIScrollView 提供任何超级视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-18
      • 2010-11-06
      • 2013-01-18
      • 2013-01-31
      • 1970-01-01
      • 2012-10-21
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多