zoukankan      html  css  js  c++  java
  • 滚动视图、定时器、分页控件的综合使用

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

  • 相关阅读:
    Object.keys方法
    vue数据绑定原理
    JS控制数字从指定数开始变化
    传入参数和回调取值
    Android contacts content provider学习小结
    Android输入法框架分析(1)-三大组件
    通过Android View的两种事件响应方法比较inheritance和composition
    对象间相互调用时互相控制的几种方法
    immutable和mutable对象
    关于Unicode
  • 原文地址:https://www.cnblogs.com/sayimba/p/5761363.html
Copyright © 2011-2022 走看看