UIScrollView 控制器没有完全滚动
UIScrollView Controller not scrolling fully
我很确定这与可怕的自动布局有关。 (从 2 天开始就一直在尝试掌握它)
所以我掌握了一些,但现在我的 UIScrollView 没有完全向下滚动,图片在解释这些事情方面要好得多
这是滚动视图
这是内容视图
所以问题是滚动正在发生,但随后它又弹回来了。所以我无法点击注册按钮
编辑 1
您的内容视图上超级视图的底部空间设置为 -74.0,我不知道您是否有理由必须这样做,但请尝试将其设置为 -8.0。我认为您的滚动视图自动向上滚动到 0.0 标记
编辑:
我在 github 上创建了一个小示例供您查看,here。该项目说明了下面的答案,并使用了我描述的技术,仅此而已。
原答案:
我想在这里提出一些建议。
首先,我知道您已经尝试了一段时间但删除了所有当前的限制(我知道很痛苦但是)。为清楚起见,请执行此操作,因为 ....
视图应该是场景的大小,看起来你想要滚动视图是全屏所以也需要是场景的大小。
例如如果你在 6Plus 下设计默认场景大小是 414x736 所以它包含的视图和滚动视图也应该是 414x736.
- 只有内容视图需要是您希望显示的真实内容的大小。为了便于讨论,假设内容为 414x1000。
现在滚动视图的约束很简单了。它的所有边缘都需要零间距。
您可以通过多种方式将内容视图添加到滚动视图。我尝试这样做的方式因项目而异,主要取决于场景的复杂程度。如果它是一个非常繁忙的场景,我会在界面生成器中将内容视图保留在滚动视图之外,这样我就可以轻松地处理它并可视化整个视图。然后我在代码中将内容视图添加到滚动视图。
如果它是一个更简单的视图,您可以将它添加到界面生成器的滚动视图中。最终,无论您采用哪种方式,您都可能无法在界面构建器中看到内容视图,因为内容视图比滚动视图大并且内容变得模糊。那就自己玩吧,找到适合自己的好方法。
- 定义内容视图及其所有子视图。内容视图需要比滚动视图高,否则它不会滚动。所有内容视图的子视图都需要定义从上到下的高度和从左到右的宽度。在您的情况下,滚动视图是垂直滚动而不是水平滚动,因此所有宽度需要加起来等于滚动视图的宽度,但高度需要加起来等于内容视图的整个高度。
注意:如果你按比例这样做,你以后的生活会更轻松。如果您使用固定高度执行所有这些操作,故事板将在不同的设备尺寸上中断。
- 现在 "tricky bit" 有点违反直觉。您需要将内容视图固定到滚动视图,记住内容视图的高度高于滚动视图。在 Interface Builder 中的所有其他情况下,将视图固定到超级视图(0 填充)将相应地调整高度(或宽度)。对于滚动视图与其内容视图之间的关系,这不会发生。
首先固定内容视图
注意到-400了吗?请记住内容视图比滚动视图高,我们会立即更改它。
Select我们刚刚创建的底部约束(-400):
Select常量值旁边的下拉箭头:
Select 标准值 并输入 0 作为常量。
你现在应该有一个没有破坏约束的故事板,如果你构建并且 运行 你应该得到一个所需的滚动视图。
我很确定这与可怕的自动布局有关。 (从 2 天开始就一直在尝试掌握它)
所以我掌握了一些,但现在我的 UIScrollView 没有完全向下滚动,图片在解释这些事情方面要好得多
这是滚动视图
这是内容视图
所以问题是滚动正在发生,但随后它又弹回来了。所以我无法点击注册按钮
编辑 1
您的内容视图上超级视图的底部空间设置为 -74.0,我不知道您是否有理由必须这样做,但请尝试将其设置为 -8.0。我认为您的滚动视图自动向上滚动到 0.0 标记
编辑:
我在 github 上创建了一个小示例供您查看,here。该项目说明了下面的答案,并使用了我描述的技术,仅此而已。
原答案:
我想在这里提出一些建议。
首先,我知道您已经尝试了一段时间但删除了所有当前的限制(我知道很痛苦但是)。为清楚起见,请执行此操作,因为 ....
视图应该是场景的大小,看起来你想要滚动视图是全屏所以也需要是场景的大小。
例如如果你在 6Plus 下设计默认场景大小是 414x736 所以它包含的视图和滚动视图也应该是 414x736.
- 只有内容视图需要是您希望显示的真实内容的大小。为了便于讨论,假设内容为 414x1000。
现在滚动视图的约束很简单了。它的所有边缘都需要零间距。
您可以通过多种方式将内容视图添加到滚动视图。我尝试这样做的方式因项目而异,主要取决于场景的复杂程度。如果它是一个非常繁忙的场景,我会在界面生成器中将内容视图保留在滚动视图之外,这样我就可以轻松地处理它并可视化整个视图。然后我在代码中将内容视图添加到滚动视图。
如果它是一个更简单的视图,您可以将它添加到界面生成器的滚动视图中。最终,无论您采用哪种方式,您都可能无法在界面构建器中看到内容视图,因为内容视图比滚动视图大并且内容变得模糊。那就自己玩吧,找到适合自己的好方法。
- 定义内容视图及其所有子视图。内容视图需要比滚动视图高,否则它不会滚动。所有内容视图的子视图都需要定义从上到下的高度和从左到右的宽度。在您的情况下,滚动视图是垂直滚动而不是水平滚动,因此所有宽度需要加起来等于滚动视图的宽度,但高度需要加起来等于内容视图的整个高度。
注意:如果你按比例这样做,你以后的生活会更轻松。如果您使用固定高度执行所有这些操作,故事板将在不同的设备尺寸上中断。
- 现在 "tricky bit" 有点违反直觉。您需要将内容视图固定到滚动视图,记住内容视图的高度高于滚动视图。在 Interface Builder 中的所有其他情况下,将视图固定到超级视图(0 填充)将相应地调整高度(或宽度)。对于滚动视图与其内容视图之间的关系,这不会发生。
首先固定内容视图
注意到-400了吗?请记住内容视图比滚动视图高,我们会立即更改它。
Select我们刚刚创建的底部约束(-400):
Select常量值旁边的下拉箭头:
Select 标准值 并输入 0 作为常量。
你现在应该有一个没有破坏约束的故事板,如果你构建并且 运行 你应该得到一个所需的滚动视图。