【问题标题】:Detect UIPageControl page change检测 UIPageControl 页面变化
【发布时间】:2017-08-09 16:25:52
【问题描述】:

我想在UICollectionViewCell 中添加一个UIPageController。我创建了一个自定义 nib 文件,其中包含 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)
}

如何检测页面变化?点也在视图的中间,可以把它们放在中间吗?

【问题讨论】:

    标签: ios swift uipagecontrol


    【解决方案1】:

    来自Apple Documentation

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

    你也可以使用

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

    【讨论】:

    • 稍后我会尝试您的解决方案,谢谢。但它写道,改变是通过点击控制器发生的,而且在我的解决方案中,实际上不可能滑动到下一个视图。这是正常的吗?我应该使用 uipageviewcontroller,然后在其上放置 uiviewcontrole,而不是直接将 uiviewcontrol 放置在 collectionviewcell 上吗?
    【解决方案2】:

    斯威夫特 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)
    }
    

    创建一个选择器来改变你想要的值:

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

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多