UIScrollView循环滚动

循环滚动原理很简单,注释中可以看到


//
//  ViewController.swift
//


import UIKit

class ViewController: UIViewController,UIScrollViewDelegate {
    
    let _widthSV:CGFloat = UIScreen.mainScreen().bounds.size.width - 20
    
    let _heightSV:CGFloat = 200
    
    let _scrollView:UIScrollView = UIScrollView()
    
    //图片循环滚动原理
    //两边各加一张图片,按照 1  2  3  4  5  6 顺序对应下面六张图片
    //当滚动至6时触发函数 scrollViewDidScroll 中的条件语句 s2 让画面在感觉不到的情况下跳转至2
    //当滚动至1时触发函数 scrollViewDidScroll 中的条件语句 s1 让画面在感觉不到的情况下跳转至5
    let picNames:NSArray = NSArray(array: ["pic4", "pic1", "pic2", "pic3", "pic4", "pic1"])
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.view.addSubview(_scrollView)
        
        _scrollView.frame = CGRectMake(10, 50, _widthSV, _heightSV)
        
        for var i = 0; i < picNames.count; i++ {
            let nameStr:NSString = picNames[i] as! NSString
            
            let imageView:UIImageView = UIImageView(frame: CGRectMake(CGFloat(i) * _widthSV, 0, _widthSV, _heightSV))
            
            let imageFileStr:NSString = NSBundle.mainBundle().pathForResource(nameStr as String, ofType: "jpg")!
            
            imageView.image = UIImage(contentsOfFile: imageFileStr as String)
            
            _scrollView.addSubview(imageView)
        }
        
        _scrollView.contentSize = CGSizeMake(CGFloat(picNames.count) * _widthSV, 0)
        _scrollView.pagingEnabled = true
        _scrollView.contentInset = UIEdgeInsetsZero
        _scrollView.setContentOffset(CGPointMake(_widthSV, 0), animated: false)
        _scrollView.delegate = self
        _scrollView.showsHorizontalScrollIndicator = false //不显示滚动条
    }
    
    func scrollViewDidScroll(scrollView: UIScrollView) {
        let point = scrollView.contentOffset
        if Int(point.x) == 0 {   //s1
            scrollView.setContentOffset(CGPointMake(_widthSV * CGFloat(picNames.count - 2), 0), animated: false)
        }else if Int(point.x) == Int(_widthSV * CGFloat(picNames.count - 2 + 1)) {  // s2
            scrollView.setContentOffset(CGPointMake(_widthSV, 0), animated: false)
        }
    }
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值