调整 UIView 的大小以适应 uiScrollView 中的所有内容
Posted
技术标签:
【中文标题】调整 UIView 的大小以适应 uiScrollView 中的所有内容【英文标题】:Size a UIView to fit all of its contents in a uiScrollView 【发布时间】:2016-09-18 16:59:58 【问题描述】:我在调整 uiScrollView 内的 uiView 大小以包含其所有子视图时遇到问题。这是我的布局图像(我将滚动视图中的 UIView 涂成蓝色以突出显示问题)
my layout
这是发生的事情,但当我启动应用程序时。这是渲染出来的
rendered view
如您所见,蓝色内容视图的大小仅适用于手机的屏幕尺寸,并且下方的所有子视图都在框架之外,我无法与它们交互。谁能告诉我如何正确缩放此内容视图?这是一个较旧的应用程序,我不能使用自动布局,只能使用弹簧和支柱。
【问题讨论】:
您在使用 AutoLayouts 吗?还是简单的手动布局?? 手动布局。这是一款非常古老的旧版应用,不支持自动布局或情节提要。 我已经为手动版面和自动版面添加了两种模式。 【参考方案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*/));
【讨论】:
非常感谢!非常感谢您的回答!【参考方案2】:对于Autolayout
和UIScrollView
,我们应该遵循一种特殊技术。
UIScrollView
,并设置约束“顶部、底部、前导和尾随等于 0”
然后在UIScrollView
中插入另一个相同大小的View,并设置约束'Top、Bottom、Leading和Trailing等于0'。这仍然会显示红色(这意味着约束仍然不正确)所以 Control + 拖动到我们在开始时创建的 ScrollView 的父视图并设置相等的宽度和相等的高度。在Xcode右侧的property属性中选择等高约束,将优先级降低到750。
现在将此视图中的最终视图添加为内容视图 将所有视图插入其中,并且可能此视图可以比其父视图扩展高度更高,假设以前的视图具有 550 高度,而此视图现在具有 990 高度没关系。只需插入,直到您完成添加所有内容,当您完成添加约束(顶部、底部、前导、尾随和高度)这是一个令人困惑的点。根据上述高度,您的底部约束可能具有常量值 = -440,而高度约束具有 990,只需选择底部约束并将值更改为 0。
注意:必须在添加约束后更改底部约束的值,而不是在添加约束时更改。
【讨论】:
以上是关于调整 UIView 的大小以适应 uiScrollView 中的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
调整 UIView 的大小以适应 uiScrollView 中的所有内容