好吧,我所拥有的是一个UIScrollView,它被约束到主视图的所有四个边,垂直和水平居中,并设置为与视图具有相同的宽度和高度。当我运行应用程序时,我放在UIScrollView之上的所有子视图都显示在我想要它们的位置,但只有底部的UITextView不是。看起来我已经尝试了各种约束组合,但是当我运行应用程序时它永远不会出现,无论我做什么。以下是界面构建器中约束的屏幕截图:
即使我在运行之前预览文件Main.storyboard,它看起来像这样:
但是当我实际运行应用程序时,屏幕上缺少UITextView,即使我以多种方式改变约束:
对此问题的任何帮助将不胜感激!提前谢谢。
答案 0 :(得分:0)
如果您希望scrollView
仅垂直滚动,则不应将其高度设置为等于superView
,因此请将其移除,只需将宽度设置为superView
然后再计算高度基于其中的subViews
我建议您在UIView
中拖动scrollView
并将约束设置为四边,并将其命名为containerView,然后将其宽度设置为背景视图并开始在其中布置视图而不是在其中滚动视图:)
如果scrollView中的所有视图的高度都清晰,则可以推断出scrollView的高度
在这种情况下,你可以设置一个固定的高度containerView
,如800
,以摆脱红线并检查它是如何工作的:)
答案 1 :(得分:0)
我注意到你可能要解决的一些线索可能解决了这个问题。由于scrollView是通过其内容的元素扩展的,因此您必须显式处理scrollView中的每个元素:
对于顶部的imageView没有很好的约束,您需要为其提供宽度或宽高比。修复imageView问题可能会解决textview高度问题,即使它仍然是一个良好的开端。
TextView底部锚点等于scrollView底部锚点,但你必须知道textView也是一种scrollView。因此,同时相互约束是不合理的。因为它们都没有明确的高度。您可以尝试在textView中键入一些单词,这些单词至少会根据其内容给出高度,然后scrollView可以检测到textView bottomAnchor。你可能会看到一些东西。
你的scrollView的高度等于视图的高度也很奇怪,scrollView首先不应该约束它的高度。因为它不能再是“Scroll”View,因为它的高度是恒定的。你应该让它的宽度等于视图,并让高度由它的元素高度决定。然后它将成为一个滚动视图。
希望有所帮助
答案 2 :(得分:0)
避免将所有子视图直接放在scrollView
中。自动布局将分崩离析。
你需要:
UIView
内添加UIScrollView
,约束0
- 0
- 0
- 0
到leading
- top
- bottom
- trailing
到UIScrollView
,并将所有子视图放在UIView
内。 之后,contentSize
UIScrollView
代码add missing constraints
//default color instead the attribute is not set.
var color = Color.Blue;
var attributes = new int[] { Android.Resource.Attribute.ColorAccent };
var typeArray = ObtainStyledAttributes(attributes);
//get the fist item (we are sending only one) and passing
//the default value we want, just in case.
var colorAccent = typeArray.GetColor(0, color);
。
此外,您可以:
colorAccent
查看遗漏的内容。