我的水平滚动视图不起作用

Posted

技术标签:

【中文标题】我的水平滚动视图不起作用【英文标题】:My horizontal scrollview is not working 【发布时间】:2018-07-05 16:17:00 【问题描述】:

我在我的应用程序中的视图中添加了一个滚动视图,该视图是从选项卡控制器中选择的,因此它是一个容器而不是 UIViewController,它被声明如下

class HomeViewController: Container, UIScrollViewDelegate ..

我在情节提要中添加了滚动视图并向其中添加了所有组件,我已经从情节提要中分配了委托,并将此代码放在我的 ViewController 中

scrollview.contentSize = CGSize(width:1048, height:scrollview.frame.height)
scrollview.delegate = self

这就是我的 ScrollView 在我的故事板中的样子,你可以看到 scrollview 是我的 UIScrollView,然后我添加了一个 UIView viewScroll,然后向 viewScroll 添加了四个视图(View1、View2、View3 和 View4),scrollview 的大小为375x340 和 viewScroll 设置为 1048x340

当我运行应用程序时,它不会滚动。由于它不是 UIViewController,我是否需要以不同的方式处理这个问题,或者我还遗漏了什么?

【问题讨论】:

请显示您的代码.. 特别是当您设置视图大小等时 你是否设置了滚动视图的内容大小。还要检查是否启用了滚动 【参考方案1】:

我已经在故事板中添加了滚动视图,并将宽度设置为 1050,高度设置为 330

您应该将滚动视图的宽度和高度设置为最多与其包含视图一样大。您需要设置为 1050 和 330 的是滚动视图的 contentSize - scrollView 只有在其 contentSize 大于其边界时才可滚动。

如果您使用 Interface Builder 设置滚动视图,则需要为其子边缘添加约束。例如,在您的情况下,您必须在 View Scroll 视图中添加前导、尾随、顶部和底部约束。选择它并在界面生成器中添加以下约束:

之后会有这样的东西:

当您向UIScrollViews 子视图添加边缘约束时,您是在暗示滚动视图的内容大小。如果滚动视图知道它的内容大小并且它大于滚动视图的边界,那么您就可以进行滚动了。

【讨论】:

感谢您的帮助,丹,我真的很感激。我已将情节提要中的滚动视图设置为 375x325,并将此代码添加到视图控制器 viewDidLoad() scrollview.contentSize = CGSize(width: 1050, height: 325) 但它仍然不起作用。我错过了一些东西,所以任何帮助将不胜感激 @user616076 请告诉我们如何将内容添加到滚动视图中。 我已经修改了我上面的原帖,请告诉我你的想法 @user616076 您是否将View Scroll 边缘约束设置为Scroll View?比如leading前者的anchor到后者的同一个anchor? 不,我没有,您能否详细说明一下,因为这很可能是我所缺少的

以上是关于我的水平滚动视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ios 8 - 水平滚动视图中的按钮拦截平移事件 - 滚动不起作用

全屏视图在 HStack 和水平滚动视图中不起作用

堆栈小部件内的列表视图不起作用(滚动方向:Axis.vertical)

iOS 9 UICollectionView 水平重新加载数据不起作用

Xcode:滚动视图不起作用

苹果自己关于如何使用自动布局制作水平滚动 UIScrollView 的说明不起作用?