swift实现自动轮播图效果(UIScrollView+UIPageControl+Timer)
2017-09-29 11:11
786 查看
本文实例为大家分享了swift实现自动轮播图效果的具体代码,供大家参考,具体内容如下
比较简单,原理就不说了,这里只做记录:
代码如下:
1、准备
var pageControl:UIPageControl? var myscrollView:UIScrollView? var myTimer:Timer? var mycurrentPage:NSInteger? var courses = [ ["name":"first","pic":"1.jpeg"], ["name":"second","pic":"2.jpeg"], ["name":"third","pic":"3.jpeg"] ]
2、内容的添加
//添加scrollview self.addScrollView() //添加图片 self.addImages() //添加pagecontrol self.addPageControl() mycurrentPage = 1 //添加定时器 self.setupTimer()
具体方法:
func addScrollView(){ self.myscrollView = UIScrollView() self.myscrollView?.frame = CGRect(x:0,y:0,width:kScreenWidth,height:kScreenHeight/2) self.myscrollView?.contentSize = CGSize(width:kScreenWidth*3,height:kScreenHeight/2) self.myscrollView?.showsHorizontalScrollIndicator = false self.myscrollView?.showsVerticalScrollIndicator = false self.myscrollView?.scrollsToTop = false self.myscrollView?.delegate = self self.myscrollView?.isPagingEnabled = true self.view.addSubview(self.myscrollView!) } func addImages(){ let size = self.myscrollView?.bounds.size for (seq,course) in courses.enumerated() { let page = UIView(frame:CGRect(x:0,y:64,width:kScreenWidth,height:kScreenHeight/2)) let imageView=UIImageView(image:UIImage(named:course["pic"]!)) imageView.frame = page.frame page.addSubview(imageView) page.backgroundColor = UIColor.gray let lab1 = UILabel(frame:CGRect(x:15,y:kScreenHeight/2-100,width:kScreenWidth-30,height:40)) lab1.textAlignment = .center lab1.backgroundColor = UIColor.red lab1.text = course["name"] page.addSubview(lab1) page.frame = CGRect(x:CGFloat(seq)*(size?.width)!,y:0,width:(size?.width)!,height:(size?.height)!) self.myscrollView?.addSubview(page) } } func addPageControl(){ self.pageControl = UIPageControl(frame:CGRect(x:kScreenWidth/2-50/2,y:kScreenHeight/2-40,width:50,height:35)) self.pageControl?.backgroundColor = UIColor.blue self.pageControl?.numberOfPages = courses.count self.view.addSubview(self.pageControl!) } func setupTimer() { self.myTimer = Timer.init(timeInterval: 2.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) RunLoop.main.add(self.myTimer!, forMode: RunLoopMode.defaultRunLoopMode) // DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) { // self.myTimer?.fire() // } } func closeTimer(){ self.myTimer?.invalidate() self.myTimer = nil } func timerAction(){ self.pageControl?.currentPage += mycurrentPage! if self.pageControl?.currentPage == 0 || self.pageControl?.currentPage == 2 { mycurrentPage = -mycurrentPage! } self.myscrollView?.contentOffset = CGPoint(x:CGFloat(kScreenWidth)*CGFloat((pageControl?.currentPage)!),y:0) }
3、一些代理方法的实现,手动拖动的时候,销毁定时器,节省内存
internal func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { let page = Int(scrollView.contentOffset.x/scrollView.frame.size.width) self.pageControl?.currentPage = page } func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { self.closeTimer() } func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { self.setupTimer() } func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { self.pageControl?.currentPage = Int(scrollView.contentOffset.x/kScreenWidth) }
效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- swift开发之 -- 自动轮播图(UIScrollView+UIPageControl+Timer)
- IOS基础UI之(九) UIPageControl结合UIScrollView实现分页效果
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- 【转载】通过UIPageControl+UIScrollView实现图片循环轮播(原理解释的很详细)
- UIScrollView+UIPageControl+NSTimer 图片自动滚动的两种实现方法
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- [IOS]通过UIPageControl+UIScrollView实现图片循环轮播
- 使用UIScrollView和UIPageControl做一个可以用手势来切换图片的效果
- (ios)UIScrollView和UIPageControl来实现app的欢迎界面
- UIScrollView+UIpageControl实现图片的循环滚动切换
- 用UIScrollView,UIPageControl来实现滚动视图。
- UISCrollView和UIPageControl设置左右滑动界面效果
- UIScrollView,UIPageControl,UIImageView 实现图片轮播的效果
- UIScrollView 实现广告栏的无限轮播(可设置自动播放时间)
- viewPager+Handler+Timer简单实现广告轮播效果
- UIScrollview实现左右循环滑动和自动轮播