UIScrollview不会水平滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIScrollview不会水平滚动相关的知识,希望对你有一定的参考价值。

我有一个项目,我试图使用UIScrollView水平滚动,但是,我不能让它滚动。

scrollview是通过Interface Builder添加的,之后它在viewWillAppear()中设置,这就是我所做的:

let overview = CourseDetails(course: self.course, type: holes, frame: CGRect(x: 0, y: 0, width: 812, height: 100))
scrollView.addSubview(overview)
scrollView.contentSize = CGSize(width: 812, height: 100)
overview.frame.size.width = 812
scrollView.translatesAutoresizingMaskIntoConstraints = false

scrollview的内容视图宽度为812,而UIViews框架的宽度为345 ...

在整个scrollview场景中是否缺少一个步骤?

答案

你不需要设置content sizeUIScrollView。您可以在界面构建器中进行设置。

interface builder中执行以下步骤:

  1. 在视图层次结构中添加UIScrollView
  2. 添加UIView作为UIScrollView的子视图,这将是UIScrollView的内容视图。现在,您将添加要滚动的所有其他视图作为此subviewscontentView
  3. 现在为UIScrollView和它的内容view(UIView)设置约束。对于UIScrollView,设置Leading, Trailing ,Top and Bottom限制它的superView。对于contentViewUIScrollView,将leading, trailing, top and bottom约束引脚设置为UIScrollView. 现在是设置content sizeUIScrollView的棘手部分。为width设置heightcontentView约束。你必须设置widthheight等于UIScrollView。要设置这两个约束,在contentView上进行选择,然后控制+拖动到UIScrollView,然后选择相等的width和相等的height。 现在,如果要进行水平滚动,请将约束优先级设置为width的低(250);如果要进行垂直滚动,则将约束优先级设置为height
另一答案

我认为,CourseDetails视图生成会产生问题。我使用以下代码检查:

let overview = UIView.init(frame: CGRect(x: 0, y: 0, width: 812, height: 100))
overview.backgroundColor = UIColor.green
scrollView.addSubview(overview)
scrollView.contentSize = CGSize(width: overview.frame.size.width, height: 100)
scrollView.translatesAutoresizingMaskIntoConstraints = false

它正在发挥作用。请分享CourseDetails视图信息以解决此问题,否则很难跟踪。

请检查界面构建器滚动视图设置:

 1. Enable check mark for scrolling enabled [Scrolling Section]
 2. Enable check mark for user interaction enabled [View Section]

以上是关于UIScrollview不会水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 中的水平滑动

UIScrollView 不会随着里面的内容视图滚动

使用按钮检测水平滚动 UIScrollView 上的垂直滚动

带有 UIButtons 的 UIScrollView - 当按钮开始触摸时,滚动视图不会滚动

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

全景图上的水平 UIScrollView