在UIScrollView Swift中禁用垂直滚动

时间:2017-10-04 11:09:38

标签: ios swift uiscrollview

(不要将此问题标记为重复。我阅读了很多问题,但我找不到问题的答案。)

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

我尝试打印UIScrollView的内容大小,y偏移量和高度,如下所示:

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之前有效......我不知道这是否可能是原因。

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

9 个答案:

答案 0 :(得分:11)

你可以这样做。 Swift 4

self.scrollView.contentSize.height = 1.0 // disable vertical scroll

答案 1 :(得分:5)

Swift 4和Xcode 9中的

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

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

答案 2 :(得分:5)

非常有魅力的解决方案是:

     // also don't forget
     // YourViewController: UIViewController, UIScrollViewDelegate {

  @IBOutlet weak var scrollView: UIScrollView!

  override func viewDidLoad() {
    super.viewDidLoad()

    self.scrollView.delegate = self
  }

  func scrollViewDidScroll(_ scrollView: UIScrollView) {
     if scrollView.contentOffset.y > 0 || scrollView.contentOffset.y < 0 {
        scrollView.contentOffset.y = 0
     }
  }

答案 3 :(得分:1)

只需在scrollViewDidScroll

中设置contentOffset即可
if scrollView.contentOffset.y > 0 {
    scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y: 0)
}

答案 4 :(得分:0)

快速3和4: 禁用UIScrollView滚动并保持实际的内容偏移量:

scrollView.isScrollEnabled = false

scrollView.panGestureRecognizer.isEnabled = false

启用再次滚动:

scrollView.isScrollEnabled = true

scrollView.panGestureRecognizer.isEnabled = true

答案 5 :(得分:0)

使用下一个类,根据需要设置b = np.frombuffer(np.array(data[12:12+4], dtype=np.byte), dtype=np.uint32) print ('endianess:', hex(b[0]))

canScroll

答案 6 :(得分:0)

只需添加单行

yourScrollView.bounces = false

并确保您的滚动视图子视图(内容)的高度等于您的滚动视图的高度 然后你就完成了

答案 7 :(得分:0)

迅速

self.scrollView.contentSize.width = 1.0 //禁用垂直滚动

答案 8 :(得分:-1)

Swift 5

scrollView.isScrollEnabled = false