亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發商品頁中banner中點擊查看圖片

2019-10-21 18:41:46
字體:
來源:轉載
供稿:網友

輪翻播放與查看是分開的,輪翻是是用 開源的SDCycleScrollView

這里是給出的是查看的:

//// FullScreenShowImageView.swift// joopic//// Created by jianxiong li on 16/9/27.// Copyright © 2016年 joobot. All rights reserved.//import Foundationimport UIKit//圖片輪播組件代理協議protocol FullScreenShowImageViewDelegate{ //獲取數據源 func galleryDataSource()->[String] //獲取內部scrollerView的寬高尺寸 func galleryScrollerViewSize()->CGSize  func hiddenForCliked(index:Int)}//圖片輪播組件控制器class FullScreenShowImageView: UIView,UIScrollViewDelegate{ //代理對象 var delegate : FullScreenShowImageViewDelegate!  //屏幕寬度 let kScreenWidth = BWidth  //當前展示的圖片索引 var currentIndex : Int = 0  //數據源 var dataSource : [String]?  //用于輪播的左中右三個image(不管幾張圖片都是這三個imageView交替使用) var leftImageView , middleImageView , rightImageView : UIImageView?  //放置imageView的滾動視圖 var scrollerView : UIScrollView?  //scrollView的寬和高 var scrollerViewWidth : CGFloat? var scrollerViewHeight : CGFloat?  //頁控制器(小圓點) var pageControl : UIPageControl?  //加載指示符(用來當iamgeView還沒將圖片顯示出來時,顯示的圖片) var placeholderImage:UIImage!  //自動滾動計時器 var autoScrollTimer:NSTimer?  init(frame: CGRect,delegate:FullScreenShowImageViewDelegate) {  super.init(frame: frame)  self.delegate = delegate  praperaUI() } required init?(coder aDecoder: NSCoder) {  fatalError("init(coder:) has not been implemented") } func praperaUI() {    //獲取并設置scrollerView尺寸  let size : CGSize = self.delegate.galleryScrollerViewSize()  self.scrollerViewWidth = size.width  self.scrollerViewHeight = size.height    //獲取數據  self.dataSource = self.delegate.galleryDataSource()  //設置scrollerView  self.configureScrollerView()    //設置加載指示圖片  self.configurePlaceholder()    //設置imageView  self.configureImageView()    //設置頁控制器  self.configurePageController()    //設置自動滾動計時器  //self.configureAutoScrollTimer()    self.backgroundColor = UIColor.blackColor()    self.addTapAction() }   func addTapAction(){  //添加組件的點擊事件  let tap = UITapGestureRecognizer(target: self,           action: #selector(FullScreenShowImageView.handleTapAction(_:)))  self.addGestureRecognizer(tap) }  //點擊事件響應 func handleTapAction(tap:UITapGestureRecognizer)->Void{  //獲取圖片索引值  self.delegate.hiddenForCliked(self.currentIndex)  self.dismissViewAnimate() }  func presentViewAnimate() {    let fr = self.middleImageView?.frame  self.middleImageView?.frame = CGRect(x: fr!.origin.x, y: 22, width: fr!.width, height: fr!.height)  UIView.animateWithDuration(10, animations: {      self.middleImageView?.frame = fr!     }) { (_) in     }   }  func dismissViewAnimate() {    let fr = self.middleImageView?.frame  self.middleImageView?.frame = CGRect(x: fr!.origin.x, y: fr!.origin.y - StatusAndNavHeight, width: fr!.width, height: fr!.height)  UIView.animateWithDuration(10, animations: {       self.middleImageView?.frame = CGRect(x: fr!.origin.x , y: -42, width: fr!.width, height: fr!.height)     }) { (_) in      self.hidden = true   self.middleImageView?.frame = fr!  }   }  //設置scrollerView func configureScrollerView(){  self.scrollerView = UIScrollView(frame: CGRect(x: 0,y: 0,   width: self.scrollerViewWidth!, height: BHeight))    self.scrollerView?.backgroundColor = UIColor.blackColor()  self.scrollerView?.delegate = self  self.scrollerView?.contentSize = CGSize(width: self.scrollerViewWidth! * 3,            height: BHeight)  //滾動視圖內容區域向左偏移一個view的寬度  self.scrollerView?.contentOffset = CGPoint(x: self.scrollerViewWidth!, y: 0)  self.scrollerView?.pagingEnabled = true  self.scrollerView?.bounces = false  self.addSubview(self.scrollerView!)   }  //設置加載指示圖片 func configurePlaceholder(){  //這里我使用ImageHelper將文字轉換成圖片,作為加載指示符  let font = UIFont.systemFontOfSize(17)// UIFont.systemFont(ofSize: 17.0, weight: UIFontWeightMedium)  let size = CGSize(width: self.scrollerViewWidth!, height: self.scrollerViewHeight!)  placeholderImage = UIImage(named: "圖片加載中...") }  //設置imageView func configureImageView(){    self.leftImageView = UIImageView(frame: CGRect(x: 0, y: (BHeight-scrollerViewHeight!)/2,   width: self.scrollerViewWidth!, height: self.scrollerViewHeight!))    self.middleImageView = UIImageView(frame: CGRect(x: self.scrollerViewWidth!, y: (BHeight-scrollerViewHeight!)/2,   width: self.scrollerViewWidth!, height: self.scrollerViewHeight! ));    self.rightImageView = UIImageView(frame: CGRect(x: 2*self.scrollerViewWidth!, y: (BHeight-scrollerViewHeight!)/2,   width: self.scrollerViewWidth!, height: self.scrollerViewHeight!));  self.scrollerView?.showsHorizontalScrollIndicator = false    self.leftImageView?.contentMode = UIViewContentMode.ScaleAspectFit  self.middleImageView?.contentMode = UIViewContentMode.ScaleAspectFit  self.rightImageView?.contentMode = UIViewContentMode.ScaleAspectFit    //設置初始時左中右三個imageView的圖片(分別時數據源中最后一張,第一張,第二張圖片)  if(self.dataSource?.count != 0){   resetImageViewSource()  }    self.scrollerView?.addSubview(self.leftImageView!)  self.scrollerView?.addSubview(self.middleImageView!)  self.scrollerView?.addSubview(self.rightImageView!) }  //設置頁控制器 func configurePageController() {  self.pageControl = UIPageControl(frame: CGRect(x: kScreenWidth/2-60,               y: BHeight - 30, width: 120, height: 20))  self.pageControl?.numberOfPages = (self.dataSource?.count)!  self.pageControl?.userInteractionEnabled = false  self.addSubview(self.pageControl!) }  //設置自動滾動計時器 func configureAutoScrollTimer() {  //設置一個定時器,每三秒鐘滾動一次  autoScrollTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: #selector(SliderGalleryController.letItScroll), userInfo: nil, repeats: true) }  //計時器時間一到,滾動一張圖片 func letItScroll(){  let offset = CGPoint(x: 2*scrollerViewWidth!, y: 0)  self.scrollerView?.setContentOffset(offset, animated: true) }  //每當滾動后重新設置各個imageView的圖片 func resetImageViewSource() {  //當前顯示的是第一張圖片  if self.currentIndex == 0 {   self.leftImageView?.sd_setImageWithURL(NSURL(string: self.dataSource!.last!))   self.middleImageView?.sd_setImageWithURL(NSURL(string: self.dataSource!.first!))   let rightImageIndex = (self.dataSource?.count)!>1 ? 1 : 0 //保護   self.rightImageView?.sd_setImageWithURL(NSURL(string: self.dataSource![rightImageIndex]))        }   //當前顯示的是最后一張圖片  else if self.currentIndex == (self.dataSource?.count)! - 1 {      self.leftImageView?.sd_setImageWithURL(NSURL(string:self.dataSource![self.currentIndex-1]))   self.middleImageView?.sd_setImageWithURL(NSURL(string: self.dataSource!.last!))   self.rightImageView?.sd_setImageWithURL(NSURL(string: self.dataSource!.first!))     }   //其他情況  else{      self.leftImageView?.sd_setImageWithURL(NSURL(string:self.dataSource![self.currentIndex-1]))   self.middleImageView?.sd_setImageWithURL(NSURL(string: self.dataSource![self.currentIndex]))   self.rightImageView?.sd_setImageWithURL(NSURL(string: self.dataSource![self.currentIndex+1]))  }    //設置頁控制器當前頁碼  self.pageControl?.currentPage = self.currentIndex }   //scrollView滾動完畢后觸發 func scrollViewDidScroll(scrollView: UIScrollView) {  //獲取當前偏移量  let offset = scrollView.contentOffset.x    if(self.dataSource?.count != 0){      //如果向左滑動(顯示下一張)   if(offset >= self.scrollerViewWidth!*2){    //還原偏移量    scrollView.contentOffset = CGPoint(x: self.scrollerViewWidth!, y: 0)    //視圖索引+1    self.currentIndex = self.currentIndex + 1        if self.currentIndex == self.dataSource?.count {     self.currentIndex = 0    }   }      //如果向右滑動(顯示上一張)   if(offset <= 0){    //還原偏移量    scrollView.contentOffset = CGPoint(x: self.scrollerViewWidth!, y: 0)    //視圖索引-1    self.currentIndex = self.currentIndex - 1        if self.currentIndex == -1 {     self.currentIndex = (self.dataSource?.count)! - 1    }   }      //重新設置各個imageView的圖片   resetImageViewSource()     } }  //手動拖拽滾動開始 func scrollViewWillBeginDragging(scrollView: UIScrollView) {  //使自動滾動計時器失效(防止用戶手動移動圖片的時候這邊也在自動滾動)  //autoScrollTimer?.invalidate() }  //手動拖拽滾動結束 func scrollViewDidEndDragging(scrollView: UIScrollView,         willDecelerate decelerate: Bool) {  //重新啟動自動滾動計時器  //configureAutoScrollTimer()   }}

如何使用:

var sliderGallery : FullScreenShowImageView! var bannerCurrentIndex:Int = 0  //圖片輪播組件協議方法:獲取內部scrollView尺寸 func galleryScrollerViewSize() -> CGSize {  return CGSize(width: BWidth, height: BHeight/2) }  //圖片輪播組件協議方法:獲取數據集合 func galleryDataSource() -> [String] {  return self.bannerView.imageURLStringsGroup as! [String] }   //點擊事件響應 func hiddenForCliked(index:Int){  if(bannerCurrentIndex != index){    self.bannerView.scrollToIndex(Int32(index))  }  self.navigationController?.setNavigationBarHidden(false, animated: false) }  func showImageGallery(index:Int){  //初始化圖片輪播組件  if(sliderGallery == nil){   sliderGallery = FullScreenShowImageView(frame: CGRect(x: 0, y: 0, width: BWidth,    height: BHeight),delegate:self)      sliderGallery.currentIndex = index   sliderGallery.resetImageViewSource()      //將圖片輪播組件添加到當前視圖   self.view.addSubview(sliderGallery)     }else{   sliderGallery.currentIndex = index   sliderGallery.resetImageViewSource()   sliderGallery.hidden = false     }  self.sliderGallery.presentViewAnimate()  self.navigationController?.setNavigationBarHidden(true, animated: false) }  //pragma -- SDCycleScrollViewDelegate func cycleScrollView(cycleScrollView: SDCycleScrollView!, didSelectItemAtIndex index: Int) {  print("--------index:/(index)")  bannerCurrentIndex = index  self.showImageGallery(index)   }

以上就是本次我們整理的代碼全部內容,如果大家學習時候還有任何不明白的地方,可以在下方的留言區討論,感謝你對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久综合九色九九| 精品一区二区电影| 欧美精品在线免费播放| 欧美中文字幕在线观看| 欧美日本在线视频中文字字幕| 97涩涩爰在线观看亚洲| 久久国产精品电影| 久久久久久久久电影| 欧美亚洲国产日韩2020| 欧美日韩国产综合新一区| 色妞在线综合亚洲欧美| 久久久久久高潮国产精品视| 日韩中文字幕免费看| 国产精品夫妻激情| 欧美日韩免费在线| 国产精品678| 亚洲精品国产精品国自产观看浪潮| 国产成人精品日本亚洲专区61| 97热在线精品视频在线观看| 在线成人免费网站| 久久天天躁狠狠躁夜夜躁| 久久伊人色综合| 国产精品第100页| 色偷偷888欧美精品久久久| 91精品国产91久久久久久吃药| 日韩在线观看网址| 国产999在线观看| 欧美性猛交xxxx乱大交| 成人中心免费视频| 国产精品极品美女在线观看免费| 精品久久国产精品| 91精品国产自产在线| 亚洲第一视频网站| 久久久av网站| 国产精品xxxxx| 欧美极品少妇xxxxx| 美女国内精品自产拍在线播放| 欧美区在线播放| 欧美日韩另类视频| 亚洲国产精品成人va在线观看| 欧美综合在线观看| 久久69精品久久久久久久电影好| 国产精品久久91| 成人精品久久av网站| 成人一区二区电影| 亚洲在线视频观看| 欧洲亚洲免费视频| 美女久久久久久久| 精品女同一区二区三区在线播放| 51视频国产精品一区二区| 久久久久一本一区二区青青蜜月| 一二美女精品欧洲| 九九热精品视频国产| 欧美大片在线免费观看| 亚洲天堂男人天堂| 亚洲专区中文字幕| 久久综合网hezyo| 精品日韩视频在线观看| 97视频网站入口| 亚洲第一天堂av| 日韩av网站导航| 国产精品偷伦一区二区| 精品国产一区av| 久久精品视频在线| 亚洲人成网7777777国产| 国产精品久久久久久搜索| 国产精品精品久久久| 欧美日韩一区二区免费视频| 亚洲视频专区在线| 国产精品久久综合av爱欲tv| 久久精品视频播放| 日韩av网站导航| 欧美日韩国产成人高清视频| 亚洲人成在线免费观看| 国产精品6699| 一级做a爰片久久毛片美女图片| 91精品国产综合久久香蕉| 超碰精品一区二区三区乱码| 日韩高清中文字幕| 国产98色在线| 欧美老妇交乱视频| 国产精品久久久久久久久久久久久| 久久视频在线免费观看| 欧美在线激情视频| 精品国产一区二区三区久久久狼| 91精品中国老女人| 国产成人精品视频| 日本精品性网站在线观看| 黄色成人在线免费| 秋霞成人午夜鲁丝一区二区三区| 国产在线播放不卡| 久久久人成影片一区二区三区| 欧美黄色片视频| 国产日韩欧美在线播放| 91av福利视频| 日韩电影免费在线观看中文字幕| 日韩视频在线免费| 久久久久久久国产| 操人视频在线观看欧美| 两个人的视频www国产精品| 2018中文字幕一区二区三区| 性视频1819p久久| 欧美黑人国产人伦爽爽爽| 日韩美女视频免费看| 久久综合五月天| 成人福利视频在线观看| 国产精品欧美亚洲777777| 欧美另类暴力丝袜| 亚洲欧美日韩中文视频| 亚洲精品国产精品久久清纯直播| 国产午夜精品一区理论片飘花| 欧洲美女7788成人免费视频| 亚洲视频综合网| 色婷婷综合久久久久| www.亚洲男人天堂| 国产精品久久网| 黑人狂躁日本妞一区二区三区| 九九九久久国产免费| 欧美在线视频免费播放| 爱福利视频一区| 98视频在线噜噜噜国产| 精品久久久久久国产91| 亚洲乱码国产乱码精品精| 亚洲人成电影在线播放| 国产精品扒开腿爽爽爽视频| 亚洲成人黄色网| 久久精品国产欧美激情| 日韩精品日韩在线观看| 国产成人涩涩涩视频在线观看| 国产精品视频区1| 日韩福利视频在线观看| 亚洲一区二区免费在线| 欧美在线视频一二三| 欧美激情中文字幕在线| www.xxxx欧美| 国产91精品不卡视频| 色哟哟亚洲精品一区二区| 亚洲品质视频自拍网| 日韩av在线网址| 亚洲欧美国产一本综合首页| 在线观看国产成人av片| 国产精品久久久亚洲| 另类美女黄大片| 岛国av一区二区在线在线观看| 亚洲偷欧美偷国内偷| 精品久久久久久久久久国产| 国内精品久久久久久中文字幕| 日韩电影中文字幕一区| 亚洲国语精品自产拍在线观看| 欧美第一黄色网| 国产精品电影久久久久电影网| 最近2019年日本中文免费字幕| 在线电影欧美日韩一区二区私密| 欧美国产日韩二区| 国产精品com| 亚洲电影免费观看高清完整版| 欧美大秀在线观看| 国模精品视频一区二区三区| 91精品国产色综合| 一级做a爰片久久毛片美女图片| 久久夜精品va视频免费观看| 久久夜色精品国产欧美乱| 精品网站999www| 成人黄在线观看|