全网整合营销服务商

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

免费咨询热线: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 


相关文章: 安云自助建站系统如何快速提升SEO排名?  建站之星备案是否影响网站上线时间?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何在阿里云虚拟主机上快速搭建个人网站?  Python如何创建带属性的XML节点  如何选择建站程序?包含哪些必备功能与类型?  如何登录建站主机?访问步骤全解析  成都网站制作公司哪家好,四川省职工服务网是做什么用?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  建站之星收费标准详解:套餐费用及年费价格表一览  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何彻底卸载建站之星软件?  如何解决ASP生成WAP建站中文乱码问题?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站之星如何助力网站排名飙升?揭秘高效技巧  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何用低价快速搭建高质量网站?  电商网站制作公司有哪些,1688网是什么意思?  如何通过服务器快速搭建网站?完整步骤解析  网站app免费制作软件,能免费看各大网站视频的手机app?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何快速启动建站代理加盟业务?  建站之星如何通过成品分离优化网站效率?  开心动漫网站制作软件下载,十分开心动画为何停播?  如何在万网自助建站中设置域名及备案?  ,石家庄四十八中学官网?  如何通过万网虚拟主机快速搭建网站?  ,想在网上投简历,哪几个网站比较好?  青岛网站建设如何选择本地服务器?  ,制作一个手机app网站要多少钱?  网站制作服务平台,有什么网站可以发布本地服务信息?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  建站org新手必看:2024最新搭建流程与模板选择技巧  教学论文网站制作软件有哪些,写论文用什么软件 ?  宝塔建站后网页无法访问如何解决?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  建站之星24小时客服电话如何获取?  建站之星代理如何优化在线客服效率?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  做企业网站制作流程,企业网站制作基本流程有哪些?  音响网站制作视频教程,隆霸音响官方网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何通过虚拟机搭建网站?详细步骤解析  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何在IIS7中新建站点?详细步骤解析  如何快速选择适合个人网站的云服务器配置?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何选择PHP开源工具快速搭建网站?  如何选择适合PHP云建站的开源框架?  智能起名网站制作软件有哪些,制作logo的软件? 

您的项目需求

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