在UIScrollView Swift中禁用垂直滚动

(不要把这个问题标为重复,我读了很多问题,但是我没有find我问题的答案。)

我的问题是以下几点:我有一个应该只水平滚动的UIScrollView 。 在这里它垂直滚动20px(奇怪的事实:它看起来与状态栏高度相同)。

我试图打印的内容大小,y偏移量和UIScrollView的高度像这样:

 print(horizontalScrollView.contentSize) print(horizontalScrollView.bounds.size.height) print(horizontalScrollView.contentOffset.y) 

我得到这个:

 (1125.0, 667.0). // scrollview content size 667.0. // scrollview height -20.0 // content offset (y) 

我知道scrollView内容大小的高度必须是<= scrollView高度。 正如你所看到的,是这样的。

我使用约束来把3 UIViewController水平堆叠。 除了这个问题,它运作良好。

另一个事实:它在Swift 4和Xcode 9之前工作…我不知道这是否是原因。

你有什么想法吗? 在此先感谢您的帮助。

在Swift 4和Xcode 9内容插件可以自动调整。 尝试设置您的滚动视图的行为不调整它。

 if #available(iOS 11, *) { scrollview.contentInsetAdjustmentBehavior = .never } 

只需在scrollViewDidScroll中设置contentOffset

 if scrollView.contentOffset.y > 0 { scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y: 0) }