在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) }