调整UIView的大小以使其在uiScrollView中的所有内容都适合

时间:2016-09-18 16:59:59

标签: ios objective-c uiview uiscrollview

我在uiScrollView内部调整uiView以包含其所有子视图时遇到问题。这是我的布局图像(我在滚动视图中将UIView着色为蓝色以突出显示问题)

my layout

这是发生的事情,但是当我启动应用程序时。这就是呈现的内容

rendered view

正如您所看到的,蓝色内容视图的大小仅适用于手机的屏幕尺寸,下方的所有子视图都在框架之外,我无法与它们互动。谁能告诉我这个内容如何正确地缩放?这是一个较旧的应用程序,我不能使用自动布局,只有弹簧和支柱。

2 个答案:

答案 0 :(得分:1)

Autolayout UIScrollView UIScrollView我们应该遵循特殊技术。

  • 创建一个想要可滚动的UIView。并根据它设置约束。
  • Inser a UIScrollView在此视图中具有相同的大小并设置约束' Top,Bottom,Leading和Trailing等于0'
  • 然后在groupby中插入另一个具有相同大小的视图,并将约束' Top,Bottom,Leading和Trailing等于0设置为'。这仍将显示红色(这意味着约束仍然不正确)所以控制+拖动到我们在开始时创建的ScrollView的父视图,并设置相等的宽度和相等的高度。选择相等的高度约束,并在Xcode右侧的属性属性中将优先级降低到750。
  • 现在在此视图中添加最终视图作为内容视图在其中插入所有视图,并且此视图可以比其父视图更高地扩展高度,可以说前一个视图具有550高度,此视图现在具有990高度没关系。只需插入,直到完成后添加所有内容,只需添加约束(顶部,底部,前导,尾随和高度)这是一个令人困惑的问题。根据上面的高度,你的底部约束可能是常数值= -440,高度约束有990只需选择底部约束并将值更改为0.
  

注意:添加约束后,必须更改底部约束的值,而不是在添加约束时。

答案 1 :(得分:1)

对于ManualLayout您只需使用获取上次输入对象的高度和y位置。

让我们说你上次添加的对象是UIView 所以只需添加此代码。

self.scrollView.constentSize = CGSizeMake(self.scrollView.frame.size.width + (lastAddedView.frame.origin.y + lastAddedView.frame.size.height /* Here you can add some more space if you feel neccessory*/));