当前位置: 首页 > 知识库问答 >
问题:

UIScrollView居中视图模糊的可滚动内容大小许多iPhone大小

凌琦
2023-03-14

我有:

    < li >应该可以在横向和纵向模式下工作的应用程序。 < li >在顶部显示全尺寸滚动视图。 < li >固定宽度和高度的滚动视图中的某些视图。(增加了H和W约束) < li >设置为在滚动视图中在容器中水平居中查看。(根据约束条件添加)

我知道解决这个问题的唯一方法是设置尾随和前导约束。但是对于不同的iPhone(5.5"、4.7"、4"),我需要设置不同的尾随和前导约束。

如何消除此警告,并且仍然具有固定W和H的居中水平视图,适用于所有iPhone尺寸?

我创建了 Github 存储库来说明此问题:滚动视图模糊

这不是UIScrollView Scrollable Content Size Ambiguity的重复,但它类似(虽然没有回答),但这个问题尤其与不同尺寸的iPhone有关。

共有3个答案

逑彬炳
2023-03-14

在这个问题上似乎有很多困惑。我的看法是,UIScrollView必须有两个尾随空间约束,一个“内部”限制将其连接到它的一个子视图(以便它可以知道其内容宽度),另一个“外部”限制将其连接到同级或超级视图,以便它知道其框架宽度。

同样的原则也适用于高度,即两个底部空间限制。

翟青青
2023-03-14

问题:

  1. 警告告诉我们滚动视图的内容大小取决于其子视图。
  2. 虽然您的子视图没有任何严格的位置和大小规则(没有固定的约束),但它会混淆笔尖生成的滚动视图内容大小。

解决方案:

>

  • 只将一个子视图设置为滚动视图的“contentView”。

    向该“内容视图”添加严格(固定)约束。

    最佳实践:其滚动视图的宽度和高度相等。

    将所有其他子视图和约束添加到“内容视图”。

  • 金谭三
    2023-03-14

    早上,我喝了一杯新鲜的咖啡,想出了解决这个问题的办法!

    1. 对所有边都有0个约束的scrollView
    2. 按钮居中水平和垂直,宽度和高度固定
    3. 当然,具有模糊的可滚动内容宽度 恼人的警告
      < li >添加两个额外的约束,例如“0”表示我们视图的尾部和/或底部空间(在我的例子中是UIButton)

    重要提示:您必须添加尾随和/或底部约束。不是“领先和顶级” - 这是行不通的!

    您可以在我的示例项目中查看它,该项目演示了如何解决这个问题:ScrollViewAmbigous

    附言

    我不知道它为什么工作,以及Xcode如何检测哪个约束更优先(因为我没有明确设置这些约束的优先级),但如果有人解释,为什么它在下面的评论中起作用,我会很感激。

     类似资料:
    • 各位开发人员,我在Interface Builder(Xcode5/iOS 7)中遇到了自动布局的问题。这是非常基本和重要的,所以我认为每个人都应该知道这是如何运作的。如果这是Xcode中的一个bug,那就是一个关键的bug! 因此,每当我有这样的视图层次结构时,我就会遇到麻烦: UIScrollView有坚实的约束,例如,每边50像素(没有问题)。然后我将顶部空间约束添加到UILabel(没问题

    • 我收到了有关。 故事是我有一个名为,我通过重写方法自己重新绘制它。绘图的内容是动态生成的。所以直到运行时我才知道它的大小。问题是我如何/在哪里可以动态设置其超级视图(滚动视图)的内容大小?对此有什么想法吗?

    • 我以编程方式创建视图,而不使用故事板。当打开调试视图层次结构时,我从Xcode收到了这个问题“运行时:布局问题:UIScrollView的可滚动内容大小不明确”。我认为这意味着对scollView的约束是不明确的。 我可以看到scrollView在视图层次结构中显示(黄色的),但它的子视图UIView没有显示。通过故事板/IB找到一些解决方案,尽管我无法将其与我的代码联系起来。感谢任何提示和建议。

    • 下面的代码(在viewDidLoad中调用)导致一个完全红色的屏幕。我希望它是一个完全绿色的屏幕。为什么是红色的?我怎样才能让它变成绿色的呢?

    • 使用自动布局时,我无法在Xcode 11 beta版的视图控制器中设置简单的UIScrollView。我知道我必须将滚动视图约束到边缘,然后将滚动视图的宽度和高度设置为包含滚动视图的整个视图的宽度与高度。然而,当我尝试设置相等的宽度和高度时,我没有得到设置相等宽度和高度的选项。 当我从滚动视图右键单击拖动到整个主视图时,我会得到以下选项: 将空间引导至安全区域 顶部空间到安全区 拖车空间到安全区

    • 问题内容: 我有一个含含。该包含一组秒。我正在其中加载很多文本(大约8k-10k个字符)。 尽管滚动有点滞后,但布局工作正常。 真正的问题是,它似乎,和有硬32767大小的限制,所以当任何增长高于,不能滚动任何进一步显示文本的最后1/3。 在下面,您可以看到该问题的最小示例。我使用了NetBeans 设计器,因此它可能有点冗长,但是我从默认设置更改的唯一一件事是s是的直接子级,滚动条策略和稍大的字