调整 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】:

对于AutolayoutUIScrollView,我们应该遵循一种特殊技术。

创建一个您希望可滚动的 UIView。并据此设置约束。 在此视图中插入一个相同大小的UIScrollView,并设置约束“顶部、底部、前导和尾随等于 0” 然后在UIScrollView中插入另一个相同大小的View,并设置约束'Top、Bottom、Leading和Trailing等于0'。这仍然会显示红色(这意味着约束仍然不正确)所以 Control + 拖动到我们在开始时创建的 ScrollView 的父视图并设置相等的宽度和相等的高度。在Xcode右侧的property属性中选择等高约束,将优先级降低到750。 现在将此视图中的最终视图添加为内容视图 将所有视图插入其中,并且可能此视图可以比其父视图扩展高度更高,假设以前的视图具有 550 高度,而此视图现在具有 990 高度没关系。只需插入,直到您完成添加所有内容,当您完成添加约束(顶部、底部、前导、尾随和高度)这是一个令人困惑的点。根据上述高度,您的底部约束可能具有常量值 = -440,而高度约束具有 990,只需选择底部约束并将值更改为 0。

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

【讨论】:

以上是关于调整 UIView 的大小以适应 uiScrollView 中的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

调整 UIView 的大小以适应 uiScrollView 中的所有内容

iPhone UIView - 调整框架以适应子视图

尝试调整我的 UIView 容器以适应较小的 iPhone 屏幕尺寸

无法让 UIImageView 调整大小以适应屏幕

UIScroll 视图未按预期工作

使用 Interface Builder 动态调整 UILabel 的大小并在其下方重新定位 UIView