Swift - 利用UIScrollView 实现轮播图
来源:互联网 发布:听书软件排行 编辑:程序博客网 时间:2024/06/05 00:21
看过网上很多轮播图的Demo,都是通过UITableView 或者 UICollectionView来实现的, 心血来潮用UIScrollView来实现一下,没做代码优化,只是个Demo。欢迎拍砖
先赋上代码源码:
//// TimerScrollView.swift// 时光网Swift//// Created by 亓大志 on 16/4/20.// Copyright © 2016年 亓大志. All rights reserved.//import UIKitprotocol TimerScrollViewDelegate { func scrollToIndexOfPage(index:Int)}class TimerScrollView: UIView,UIScrollViewDelegate { var count : Int = 0 var timer : NSTimer! var timerDelegate:TimerScrollViewDelegate? var scrollView : UIScrollView? var pageCT : UIPageControl? /* params: array : 图片URL集合 contentOffSetIndex : 偏移位置 */ func configScrollView(array:NSArray,contentOffsetIndex:Int){ count = array.count self.clipsToBounds = false self.backgroundColor = UIColor.whiteColor() scrollView = UIScrollView(frame: self.bounds) scrollView!.delegate = self scrollView!.contentSize = CGSizeMake(CGFloat(array.count+2) * self.frame.size.width, self.frame.size.height) scrollView!.pagingEnabled = true scrollView!.showsHorizontalScrollIndicator = false scrollView!.showsVerticalScrollIndicator = false self.addSubview(scrollView!) createImageViews(array,contentOffsetIndex:contentOffsetIndex) configPageControll(contentOffsetIndex) timerBegin() } func createImageViews(array:NSArray,contentOffsetIndex:Int){ for i in 0 ..< array.count+2{ var url : String! if i == 0 { url = array[array.count-1] as! String }else if i == array.count + 1 { url = array[0] as! String }else { url = array[i-1] as! String } let URL : NSURL = NSURL(string: url)! let imageView = UIImageView(frame: CGRectMake(CGFloat(i)*self.frame.size.width, 0, self.frame.size.width, self.frame.size.height)) //图片的加载需要依赖于框架, scrollView!.addSubview(imageView) } scrollView!.contentOffset = CGPointMake(CGFloat(contentOffsetIndex+1)*self.frame.size.width, 0) } func configPageControll(currentPage:Int) { pageCT = UIPageControl(frame: CGRectMake(0,self.frame.size.height-30.0,self.frame.size.width,15)) pageCT!.pageIndicatorTintColor = UIColor.grayColor() pageCT!.currentPageIndicatorTintColor = UIColor.whiteColor() pageCT!.numberOfPages = count pageCT!.currentPage = currentPage self.addSubview(pageCT!) } //开启 func timerBegin() { if timer != nil { timer.invalidate() timer = nil } timer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("timerRun:"), userInfo: nil, repeats: true) NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) } //暂停 func timerSuspend() { if timer != nil { timer.invalidate() timer = nil } } func timerRun(runTimer:NSTimer) { let offsetX = scrollView!.contentOffset.x UIView.animateWithDuration(0.4, animations: { () -> Void in self.scrollView!.contentOffset = CGPointMake(offsetX+self.frame.size.width, 0) }) { (boolValue:Bool) -> Void in self.resetContentOffset() } } func scrollViewWillBeginDragging(scrollView: UIScrollView) { timerSuspend() } func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) { timerBegin() } func scrollViewDidEndDecelerating(scrollView: UIScrollView) { resetContentOffset() } func resetContentOffset(){ if scrollView!.contentOffset.x < self.frame.size.width { scrollView!.contentOffset = CGPointMake(self.frame.size.width*CGFloat(count), 0) } if scrollView!.contentOffset.x > self.frame.size.width * CGFloat(count) { scrollView!.contentOffset = CGPointMake(self.frame.size.width, 0) } let vc = self.timerDelegate as! UIViewController if vc.respondsToSelector(Selector("scrollToIndexOfPage:")) { let index = Int((scrollView!.contentOffset.x - self.frame.size.width) / self.frame.size.width) pageCT?.currentPage = index timerDelegate?.scrollToIndexOfPage(index) } }}
GitHub地址:TimerForScrollView
0 0
- Swift - 利用UIScrollView 实现轮播图
- Swift 利用UIScrollView和两个UIImageView实现图片轮滚
- IOS 利用UIScrollView实现无限轮播图
- Swift开发IOS-UIScrollView
- Swift实现UIScrollView展示多个UIViewController
- swift UIScrollView
- [Swift 开发] Swift UIScrollView
- 利用UIScrollView实现图片的缩放
- 利用UIScrollView实现图片的缩放
- iOS UIScrollView 实现轮播图
- 可自定义分页宽度的UIScrollView(Swift实现)
- Swift UIScrollView简单介绍
- swift UIScrollView简单介绍
- Swift UIScrollView(滑动视图)
- Swift-UIScrollView使用详解
- Swift-UIScrollView 应用
- 利用UIScrollView实现循环滚动翻页的方法
- 利用UIScrollView实现图片的放大、缩小和移动查看
- 使用lua语言做高并发限流
- Java工具类——全角半角字符相互转换
- 检测过滤get或post接收值类
- 前端手型标示按钮
- android数据保存之SharedPreferences
- Swift - 利用UIScrollView 实现轮播图
- 二分查找法---java实现
- flask学习笔记(-数据库)
- cocos 单循环-按钮列表位置摆放
- 文本搜索(C实现)
- Java工具类——把金额转换成汉字大写金额
- p1001
- [leetcode] 【排序】 88. Merge Sorted Array
- 使用zsh令terminal操作更方便