我有一个项目,我试图使用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 size
的UIScrollView
。您可以在界面构建器中进行设置。
在interface builder
中执行以下步骤:
UIScrollView
UIView
作为UIScrollView
的子视图,这将是UIScrollView
的内容视图。现在,您将添加要滚动的所有其他视图作为此subviews
的contentView
。UIScrollView
和它的内容view
(UIView)设置约束。对于UIScrollView
,设置Leading, Trailing ,Top and Bottom
限制它的superView
。对于contentView
的UIScrollView
,将leading, trailing, top and bottom
约束引脚设置为UIScrollView.
现在是设置content size
的UIScrollView
的棘手部分。为width
设置height
和contentView
约束。你必须设置width
和height
等于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]