Detecting UIScrollView page change

前端 未结 10 2172
鱼传尺愫
鱼传尺愫 2020-12-07 17:11

Is there a way to detect or get a notification when user changes the page in a paging-enabled UIScrollView?

10条回答
  •  伪装坚强ぢ
    2020-12-07 17:59

    var scrollViewPage = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollViewPage = scrollView.currentPage
    }
    
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        if scrollViewPage != scrollView.currentPage {
            scrollViewPage = scrollView.currentPage
            // Do something with your page update
            print("scrollViewDidEndDecelerating: \(scrollViewPage)")
        }
    }
    

    And Use extension

    extension UIScrollView {
        var currentPage: Int {
            return Int((self.contentOffset.x + (0.5 * self.frame.size.width)) / 
            self.frame.width) + 1
        }
    }
    

提交回复
热议问题