0

我有一个视图控制器,它将以模态方式呈现,并在该VC中有一个滚动视图。但是,当我的segue是'模态存在'类型时,添加scrollview通常不起作用。我在某处读到我必须将我的scrollview放在另一个视图中才能使用。所以这是我的看法层次:Scrollview在'现在的模态'视图控制器不工作

这些都是我的视图中的制约因素:

滚动型约束:

ViewB约束:

而在ViewB中,我有另一个视图,我已经给出了一个顶端,左边的&右边限制为0的超级视图。我已经在代码中设置了这个:

override func viewDidLayoutSubviews() 
{ 
    viewB.frame.size.height = 2000 
    scrollView.contentSize = viewB.frame.size 
} 

但是,滚动视图仍然不滚动。感谢任何能够帮助你的人...一直困扰着这个。

回答

1

问题是,您已将ViewB约束条件赋予其包含滚动视图。这很好,如果你打算采取这种方法(我更喜欢);但这意味着滚动视图的contentSize由ViewB的大小决定,而不是由contentSize属性确定。因此,你的代码是无用的,你的第一步应该是把它扔掉。

然后,什么 ViewB's size?不幸的是,它与滚动视图的大小相同,因为您已经给出ViewB宽度和高度约束,使其与滚动视图的大小相同。因此没有可滚动的东西。

解决的办法是通过约束来实现您在代码中所做的事情,即给ViewB一个固定为2000的高度约束,而不是您给出的高度约束。

+0

顺便说一句,你的屏幕截图显示红色箭头的事实意味着你的约束是不好的。在做其他事情之前,你需要解决这个问题。继续使用错误的约束是毫无意义的,因为在运行时您不可能获得有意义的接口。此外,我现在可以告诉你,看看你的截图,你有一个非常不好的习惯,即过度决定你的限制,这会让你陷入严重的困境。 – matt

+0

首先感谢您的帮助马特。而且你是对的,我确实有一个习惯,即过度决定我的约束。因为滚动视图,我总是碰巧有一个错误。我的滚动视图有一个不固定的高度,所以我通常会将scrollView固定到顶部,左侧,右侧,底部。但是,然后xCode抛出一个错误,我需要在scrollview中指定视图的宽度和高度。而且高度是不固定的,所以我将它设置在代码中。在代码/完全在故事板中完成它是一种更好的方法吗? – Moo33

+0

正如我在回答中所说的,我喜欢通过故事板中的约束来做到这一点,就像你正在做的那样。 – matt

相关问题