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

本文介绍了一个使用Swift实现的iOS应用示例,该示例通过UIScrollView和UIPageControl实现了图片轮播功能。文章提供了完整的代码实现,并详细解释了如何设置UIScrollView的属性来达到平滑翻页的效果。
//
//  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值