【问题标题】:UITextView not visible on UIScrollViewUITextView 在 UIScrollView 上不可见
【发布时间】:2018-02-04 17:10:41
【问题描述】:

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

即使我在运行之前预览文件 Main.storyboard,它看起来也是这样的:

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

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

【问题讨论】:

  • 为什么会有这些红色限制?您需要解决自动布局问题。
  • 是的,我知道,但我不能让它们不红。有什么建议吗?
  • 听起来你的约束太多了;要么将视图限制在前导/尾随/顶部/底部,要么设置其中心和宽度/高度,但不能同时设置。
  • 避免将所有子视图直接放在滚动视图中。自动布局将分解。您需要 1:在 UIScrollView 中添加一个 UIView,约束为 0-0-0-0 以引导至 UIScrollView 的上下尾随,并将所有子视图放入该 UIView 中。之后,您需要通过代码设置 UIScrollView 的 contentSize。此外,您可以使用添加缺失的约束来查看缺失的内容,或者在 StoryBoard 的左侧面板中,您可以按出现的红色箭头。
  • @Sneak 你添加缺失约束的建议给了我蓝色约束,现在 UITextView 出现在应用程序中!

标签: ios iphone uiscrollview constraints uitextview


【解决方案1】:

避免将所有子视图直接放在scrollView 中。自动布局将分崩离析。 你需要:

  • UIScrollView 内添加一个UIView,约束0-0-0-0leading-@9876543@35@-bottom-@9876 987654338@,然后把你所有的子视图放在那个UIView里面。

在那之后,you need to set the contentSizeUIScrollView 通过代码。

此外,您还可以:

  • add missing constraints 看看缺少什么。

  • 在 UIStoryBoard 的左侧面板(文档大纲)中,您可以按显示的红色箭头来查看缺失或冲突的内容。

查看Apple documentation了解更多详情。

【讨论】:

  • @James 太好了! :)
【解决方案2】:

如果您希望您的scrollView 仅垂直滚动,则不应将其高度设置为等于其superView,因此将其删除并将宽度设置为其superView,然后它应根据@ 计算高度987654324@里面 我建议您在 scrollView 中拖动 UIView 并将约束设置为它的四个边,并将其命名为 containerView ,然后将其宽度设置为等于背景视图并开始在其中而不是在滚动视图内布置视图 :) 如果scrollView中所有view的高度是明确的,就可以推断出scrollView的高度 在这种情况下,您可以为您的containerView 设置一个固定高度,例如800,以消除红线并检查它是如何工作的:)

【讨论】:

    【解决方案3】:

    我注意到您可能需要解决的一些线索,这些线索可能会解决问题。由于 scrollView 是通过其内容元素扩展的,因此您必须显式处理 scrollView 中的每个元素:

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

    2. TextView底部锚点等于scrollView底部锚点,但你要知道textView也是scrollView的一种。所以同时相互约束是不合理的。因为它们都没有明确的高度。您可以尝试在 textView 中键入一些单词,这些单词至少会通过其内容为其提供高度,然后 scrollView 可以检测到 textView bottomAnchor。你可能会看到一些东西。

    3. 你的scrollView的高度等于view的高度也很奇怪,scrollView一开始不应该限制它的高度。因为它不能再是“滚动”视图了,因为它的高度是恒定的。你应该让它的宽度等于视图,并让它的高度由它的元素的高度决定。那么它实际上就是一个滚动视图。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 2011-08-23
      • 2013-05-04
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多