2017-08-27 74 views
0

好吧,我所拥有的是一个UIScrollView,它被约束在主视图的所有四边,垂直和水平居中,并设置为与视图具有相等的宽度和高度。我在UIScrollView上放置的所有子视图都在我运行该应用程序时显示出来,正是我想要它们的位置,但只有底部的UITextView不是。看起来我已经尝试了各种约束组合,但是当我运行应用程序时,无论我做什么,它都不会出现。这里是限制在界面生成器的截图:UITextView在UIScrollView上不可见

Interface Builder

甚至当我运行前预览文件Main.storyboard它看起来像这样:

Preview of Main.storyboard

但是,当我实际运行应用程序,屏幕缺少UITextView,即使当我通过多种方式更改约束时:

Running the app

任何有关这个问题的帮助将不胜感激!提前致谢。

+2

为什么这些红色限制?您有自动布局问题需要解决。 –

+0

是的,我知道,但我不能让他们不要红。有什么建议么? – James

+0

不能确切地说明它是什么,但是这条线给出了一个疑问:一个UIScrollView被约束在主视图的所有四边,垂直和水平居中。看起来像你给出了一些不必要的约束。你可以检查所有的视图层次结构在哪里,你会看到右上角的红色标记。 –

回答

0

避免把所有的子视图直接scrollView内。自动布局将分解。 您需要:

  • 添加UIViewUIScrollView里面,有约束0 - 0 - 0 - 0leading - top - bottom - trailingUIScrollView,并把那里面UIView所有子视图。

之后,you need to set thecontentSizeUIScrollView通过代码。

此外,您可以:

  • add missing constraints,看看有什么缺失。

enter image description here

  • 在UIStoryBoard左侧面板(文档大纲),你可以按红色箭头显示出来,看看有什么丢失或冲突。

enter image description here

退房Apple documentation了解更多详情。

+1

感谢您的非常详细的答案!有效! – James

+0

@James Great! :) – 2017-08-28 01:46:30

0

如果你希望你的scrollView只有垂直滚动时,不应将其高度等于其superView因此将其删除,只是将宽度设置为它superView,然后应该计算基于里面 我提供subViews高度你可以在你的scrollView中拖动一个UIView,并将约束设置为它的四个边,并将其命名为containerView,然后将其宽度设置为等于背景视图,并开始布置其中的视图,而不是滚动视图内:) 如果所有视图的高度在scrollView中很清楚,它可以推断出scrollView的高度为 ,在这种情况下你可以设置一个固定的高度为containerView,比如800摆脱红线,并检查它是如何工作:)

0

我注意到一些线索,你可能必须解决这可能可以解决这个问题。由于滚动视图是由它的内容的元件延伸,必须与在滚动视图的每个元素明确地处理:

  1. 有关顶部ImageView的不很好的约束,则需要给它的宽度或纵横比。修复imageView问题可能会解决textview高度问题,即使它不是一个好开始。

  2. TextView底部锚点等于scrollView底部锚点,但是你必须知道textView也是一种scrollView。所以在同一时间限制对方是不合理的。因为他们都没有明确的高度。你可以尝试在textView中键入一些单词,它至少会通过它的内容给出高度,然后scrollView可以检测到textView bottomAnchor。你可能会看到一些东西。

  3. 你的scrollView的高度等于视图的高度也很奇怪,scrollView不应该首先限制它的高度。因为它的高度是不变的,所以它不能再是“滚动”视图。你应该让它的宽度等于视图,并且让高度由它的元素的高度决定。那么它将是字面上的scrollview。

希望它可以帮助

相关问题