全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

swift实现自动轮播图效果(UIScrollView+UIPageControl+Timer)

本文实例为大家分享了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  # 轮播图  # iOS ScrollView实现自动布局的方法(适用Swift 3.0 )  # Swift实现可自定义分页宽度的UIScrollView  # Swift 如何让ScrollView滚动到具体某个位置  # 就不  # 说了  # 拖动  # 大家分享  # 只做  # 具体内容  # 大家多多  # height  # kScreenWidth  # width  # kScreenHeight  # showsHorizontalScrollIndicator  # CGSize  # contentSize  # addPageControl  # pagecontrol  # addImages  # setupTimer  # CGRect  # frame 


相关文章: 模具网站制作流程,如何找模具客户?  网站微信制作软件,如何制作微信链接?  太原网站制作公司有哪些,网约车营运证查询官网?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站之星伪静态规则如何设置?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  已有域名和空间如何快速搭建网站?  长沙做网站要多少钱,长沙国安网络怎么样?  深入理解Android中的xmlns:tools属性  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  建站VPS能否同时实现高效与安全翻墙?  香港服务器如何优化才能显著提升网站加载速度?  香港网站服务器数量如何影响SEO优化效果?  公司网站的制作公司,企业网站制作基本流程有哪些?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  深圳网站制作的公司有哪些,dido官方网站?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何通过VPS搭建网站快速盈利?  再谈Python中的字符串与字符编码(推荐)  建站之星多图banner生成与模板自定义指南  建站之星代理费用多少?最新价格详情介绍  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何通过cPanel快速搭建网站?  名字制作网站免费,所有小说网站的名字?  如何做静态网页,sublimetext3.0制作静态网页?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何在云指建站中生成FTP站点?  家庭建站与云服务器建站,如何选择更优?  网站图片在线制作软件,怎么在图片上做链接?  定制建站价位费用解析与套餐推荐全攻略  Android自定义控件实现温度旋转按钮效果  如何构建满足综合性能需求的优质建站方案?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  西安专业网站制作公司有哪些,陕西省建行官方网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  实现虚拟支付需哪些建站技术支撑?  历史网站制作软件,华为如何找回被删除的网站?  如何将凡科建站内容保存为本地文件?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  建站主机与服务器功能差异如何区分?  盘锦网站制作公司,盘锦大洼有多少5G网站?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何快速搭建自助建站会员专属系统?  如何通过虚拟主机快速完成网站搭建?  网站制作免费,什么网站能看正片电影? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。