检测UIScrollView是否具有要滚动的高度

时间:2018-04-11 19:14:56

标签: swift uiscrollview uikit

我有一个UIScrollView,有时候有足够的contentHeight滚动,有时候没有。我还有一个按钮,用户可以滚动到滚动视图的底部。

如果没有用户执行操作,如何检测滚动视图是否具有要滚动的contentHeight,以便我可以正确设置按钮的默认isEnabled

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在UIScrollView

上创建扩展程序
extension UIScrollView {
  var contentUntilBotttom: CGFloat {
    return max(contentSize.height - frame.size.height - contentOffset.y, 0)
  }

  var isAtTheBottom: Bool {
    return contentUntilBotttom == 0
  }
}

如果您使用RxSwift,您可以观察到以下更改:

extension Reactive where Base == UIScrollView {
  var isAtTheBottom: ControlEvent<Bool> {
    let source = contentOffset
      .map({ _ -> Bool in
        return self.base.isAtTheBottom
      })
    return ControlEvent(events: source)
  }
}

// So then subscribe to it
scrollView.rx.isAtTheBottom
  .subscribe(onNext: { (isAtTheBottom) in
    // Update anithing you need
})