我正在使用Cricket Simulator并拥有一个包含大量文本框的屏幕,供用户输入团队和玩家信息。我现在意识到我需要滚动屏幕,因为弹出键盘会隐藏屏幕的底部。
有没有办法让这个先前复杂的屏幕可滚动?我知道如何从头开始创建ScrollView,然后在Storyboard中创建我的视图,但有没有办法在之前创建它之后使其可滚动?
感谢。
答案 0 :(得分:0)
您可以使用Interface Builder(Xcode中的Storyboard编辑器)轻松实现此目的。将所有元素保留在原来的位置,在设置完所有内容之前不要担心约束问题。 (您也可以通过编程方式创建此处描述的所有内容,但无论哪种方式,您都需要一个UIScrollView来使内容可滚动。另一个选项是UITableView,但这样做的工作更多,你必须重建所有内容,就像你说的那样问题。只是想提一下这个问题。)
您的ViewController有一个主视图。将UIScrollView
从对象库拖到视图中。将ScrollView的Top Anchor
,Trailing Anchor
,Bottom Anchor
和Leading Anchor
约束条件赋予主视图,每个约束的常量为0。
将元素添加到Scrollview中的最简单方法是使用垂直UIStackView
。为了做到这一点而不是出现约束问题,您需要在卷轴视图中添加UIView
作为容器。给Scrollview提供上面提到的0个常量约束的4个锚点(这次是容器的锚点)。同时为主视图赋予它相等的宽度约束。
现在将StackView添加到容器中并设置其四个锚点(当然这次是容器)。您现在可以将元素拖到StackView中。您不需要UIStackView
。您可以将所有元素添加到容器中,但容器需要高度和宽度约束。我们已经设置了宽度约束,您需要根据元素自己进行高度约束。后者将由UIStackView
自动管理。
现在您可以开始设置约束(您不需要高度约束,因为StackView会自动计算它的高度)。 ScrollView将需要其内容的高度和宽度。它自动从StackView获得高度。在设备上运行时,一旦StackView的内容不再适合屏幕,ScrollView将自动变为可滚动。 ScrollView从具有设定宽度的容器获取宽度,因为它遵循主视图的宽度。设置锚点时,请注意取消选中Constrain to margins
的复选框。
希望下面的图片有助于说明我冗长的解释: