// // 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) } }