检测UIPageControl页面更改

use*_*567 1 uipagecontrol ios swift

我要添加一个UIPageController内部UICollectionViewCell。我创建了一个带有collectionViewCell内部的自定义笔尖文件。在单元格内,我添加了一个UIPageControl

@IBOutlet weak var pageControl: UIPageControl!

    override func awakeFromNib() {
        super.awakeFromNib()

       self.isUserInteractionEnabled = true
        pageControl.isUserInteractionEnabled = true
        self.backgroundColor = UIColor.darkGray
       setupPageControl()
    }

private func setupPageControl() {

    pageControl.numberOfPages = 7
    pageControl.translatesAutoresizingMaskIntoConstraints = false
    pageControl.currentPageIndicatorTintColor = UIColor.orange
    pageControl.pageIndicatorTintColor = UIColor.lightGray.withAlphaComponent(0.8)
}
Run Code Online (Sandbox Code Playgroud)

如何检测页面更改?圆点也位于视图的中间,是否可以将它们放在中间?

在此处输入图片说明

Wes*_*hua 10

雨燕5

1)添加目标

您可以添加一个目标来检测 setupPageControl 函数上的值更改:

private func setupPageControl() {

    pageControl.numberOfPages = 7
    pageControl.translatesAutoresizingMaskIntoConstraints = false
    pageControl.currentPageIndicatorTintColor = UIColor.orange
    pageControl.pageIndicatorTintColor = UIColor.lightGray.withAlphaComponent(0.8)
    pageControl.addTarget(self, action: #selector(pageControlHandle), for: .valueChanged)
}
Run Code Online (Sandbox Code Playgroud)

创建一个选择器来更改您想要的值:

@objc private func pageControlHandle(sender: UIPageControl){
    print(sender.currentPage)

}
Run Code Online (Sandbox Code Playgroud)

  • .valueChanged 不提供精确的点点击。它仅前进一页。如何检测精确的点点击? (3认同)

Ale*_*nko 5

在此处输入图片说明Apple文档

当用户点击页面控件以移至下一页或上一页时,该控件将发送valueChanged事件供委托处理。然后,委托可以评估currentPage属性以确定要显示的页面。页面控件只能向任一方向前进一页。当前查看的页面用白点表示。根据设备的不同,在剪切之前,屏幕上会显示一定数量的点。

你也可以用

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
    pageControl.currentPage = Int(pageNumber)
}
Run Code Online (Sandbox Code Playgroud)