swift 之UIPageControl

本文介绍了一个使用Swift实现的简单教程,展示了如何创建一个带有页面控制器的轮播视图来展示不同课程的图片。该轮播视图利用UIScrollView的pagingEnabled属性确保用户只能停留在指定的页面上。
import UIKit

class ViewController: UIViewController,UIScrollViewDelegate {

    
    @IBOutlet weak var scrollView: UIScrollView!
    
    
    @IBOutlet weak var pagecontrol: UIPageControl!
    
 
    
    
    var courses = [["name":"swift","pic":"icon"],["name":"java","pic":"navigationbar_pop"],["name":"object","pic":"icon"]]
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = CGSize.init(width: (self.view.frame.size.width * CGFloat(self.courses.count)), height: CGFloat(self.view.frame.size.height))
        print(scrollView.contentSize.width)
        scrollView.contentOffset = CGPoint.init(x: 0, y: 0)
        scrollView.showsVerticalScrollIndicator = false
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.delegate = self
        //滚动时只能停留到某一页
        scrollView.isPagingEnabled = true
      
        
        let  size = scrollView.bounds.size
        for (seq,conrse)  in courses.enumerated(){
            let pag = UIView()
            pag.backgroundColor = UIColor.init(patternImage: UIImage(named:conrse["pic"]!)!)
            pag.frame = CGRect.init(x: CGFloat(seq) * CGFloat(size.width), y: 0, width: size.width, height: size.height)

            scrollView.addSubview(pag)

            pagecontrol.backgroundColor = UIColor.black
            pagecontrol?.numberOfPages = courses.count
            pagecontrol.currentPage = 0
            
            pagecontrol?.currentPageIndicatorTintColor = UIColor.green
            //设置页背景指示颜色
            pagecontrol?.pageIndicatorTintColor = UIColor.lightGray
            self.view.bringSubview(toFront: self.pagecontrol)
            
            
            
            
            pagecontrol.addTarget(self, action: #selector(click(_ :)), for: .valueChanged)
            
        }

    }
    func click(_ sender: UIPageControl){
        //根据点击的页数,计算scrollView需要显示的偏移量
        var  frame = scrollView.frame
        frame.origin.x = frame.size.width * CGFloat(sender.currentPage)
        frame.origin.y = 0
        //展现当前页面内容
        scrollView.scrollRectToVisible(frame, animated: true)
        
       }
    
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
        //设置pagecontrol当前的页数
        pagecontrol.currentPage = page
        
    }
  
   
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值