滚动视图、定时器、分页控件的综合使用

//
//  ViewController.swift
//  banner滚动视图

import UIKit

let WIDTH = CGFloat(UIScreen.mainScreen().bounds.size.width)
let HEIGHT = CGFloat(UIScreen.mainScreen().bounds.size.height)

let pageCtr = UIPageControl()
let scrollView = UIScrollView()
var timer = NSTimer()

class ViewController: UIViewController,UIScrollViewDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.frame = CGRectMake(0, 0, WIDTH, HEIGHT)
        scrollView.contentSize = CGSizeMake(WIDTH*3, HEIGHT)
        scrollView.backgroundColor = UIColor.whiteColor()
        scrollView.delegate = self
        scrollView.pagingEnabled = true
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = false
        scrollView.bounces = false
        scrollView.contentOffset = CGPointMake(0, 0)
        view.addSubview(scrollView)
        
        for i in 1  ..< 4 {
            let image = UIImageView()
            image.frame = CGRectMake(WIDTH * CGFloat(i-1), 0, WIDTH, HEIGHT)
            image.image = UIImage(named: "(i).jpg")
            image.backgroundColor = UIColor.cyanColor()
            image.userInteractionEnabled = true
            scrollView.addSubview(image)
        }

        pageCtr.frame = CGRectMake(100, HEIGHT-100, 200, 30)
        pageCtr.backgroundColor = UIColor.cyanColor()
        pageCtr.numberOfPages = 3
        pageCtr.currentPage = 0
        view.addSubview(pageCtr)
        
        pageCtr.addTarget(self, action: #selector(ViewController.pressPageCtr), forControlEvents: UIControlEvents.ValueChanged)
    
        self.turnOntimer()
    }
    
    func turnOntimer(){
       timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(ViewController.playImage), userInfo: nil, repeats: true)
        NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
    }
    func playImage(){
        
        var number = scrollView.contentOffset.x / WIDTH+1
        if number == 3 {
            number = 0
        }
        scrollView.contentOffset = CGPointMake(number * WIDTH, 0)
        pageCtr.currentPage = Int(number)
    }
    
    func pressPageCtr(){
        
        let pageNum = pageCtr.currentPage
        UIView.animateWithDuration(0.3) {
            scrollView.contentOffset = CGPointMake(CGFloat(pageNum) * WIDTH, 0)
        }  
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
        
        let point:CGFloat = scrollView.contentOffset.x
        pageCtr.currentPage = Int(point / WIDTH)
    }
    
}

原文地址:https://www.cnblogs.com/sayimba/p/5761363.html