一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - swift使用SDPhotoBriwser瀏覽圖片教程

swift使用SDPhotoBriwser瀏覽圖片教程

2021-12-24 14:16Foreveroriginal Swift

這篇文章主要為大家介紹了swift如何使用SDPhotoBriwser瀏覽圖片的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

場景:我們在使用app的時候,特別是顯示多張圖片的時候,都會點擊圖片并進行瀏覽,比如QQ、微信,好友發表的動態,我們都會點擊進去查看原圖。現在很多app都支持圖片瀏覽功能,這樣更加方便用戶體驗,那么我們在項目開發過程中,怎么對圖片點擊進行預覽,下面介紹一下在swift項目開發中使用SDPhotoBrowser進行圖片瀏覽。

SDPhotoBrowser地址:https://github.com/gsdios/SDPhotoBrowser

下面直接代碼進行說明

//
//  ShopStoreTableHeaderView.swift
//  SmartMilk
//
//  Created by lin jiang on 2017/7/11.
//  Copyright  2017年 greengao. All rights reserved.
// 
import UIKit 
//添加SDPhotoBrowserDelegate代理
class ShopStoreTableHeaderView: UIView,UIScrollViewDelegate,SDPhotoBrowserDelegate { 
  var storeImages:NSMutableArray = NSMutableArray()
  var mainScrollView:UIScrollView?
  var mainPageControl:UIPageControl?
  var mainTimer:Timer?    
  var isMiddleShow:Bool = false       
  override init(frame: CGRect) {
      super.init(frame: frame)        
      setScrollViewUI()
      setPageControlUI()
  }    
  required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }    
  func setScrollViewUI(){
      self.mainScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height))        
      // 添加到父視圖
      self.addSubview(self.mainScrollView!)        
      // 背景顏色
      //        arc4random()
      self.mainScrollView?.backgroundColor = UIColor.white                
      // 自適應父視圖
      // self.mainScrollView.autoresizingMask = UIViewAutoresizing.FlexibleHeight
      // 其他屬性
      self.mainScrollView?.isScrollEnabled = true // 上下滾動
      self.mainScrollView?.scrollsToTop = true // 點擊狀態欄時,可以滾動回頂端
      self.mainScrollView?.bounces = true // 在最頂端或最底端時,仍然可以滾動,且釋放后有動畫返回效果
      mainScrollView?.isPagingEnabled = true // 分頁顯示效果
      mainScrollView?.showsHorizontalScrollIndicator = false // 顯示水平滾動條
      mainScrollView?.showsVerticalScrollIndicator = true // 顯示垂直滾動條
      mainScrollView?.indicatorStyle = UIScrollViewIndicatorStyle.white // 滑動條的樣式
      // 設置內容大小
      // self.mainScrollView?.contentSize = CGSize(width: originX, height: scrollViewHeight)                
      // 代理
      self.mainScrollView?.delegate = self
  }    
  func setPageControlUI(){
      self.mainPageControl = UIPageControl(frame: CGRect(x: (self.width - 150.0) / 2, y: ((self.mainScrollView?.bounds)!.height - 20.0 - 10.0), width: 150.0, height: 20.0))        
      // 添加到父視圖
      self.addSubview(self.mainPageControl!)
      // 背景顏色
      self.mainPageControl?.backgroundColor = UIColor.clear        
      // 其他屬性設置
      self.mainPageControl?.numberOfPages = 0 // 總頁數
      self.mainPageControl?.currentPage = 0 // 當前頁數,默認為0,即第一個,實際數量是0~n-1
      self.mainPageControl?.pageIndicatorTintColor = UIColor.lightGray // 非當前頁顏色
      self.mainPageControl?.currentPageIndicatorTintColor = UIColor.red // 當前頁顏色 
  }    
  func setMainScrollViewPageControl(images:[StoreImageModel]) {
      self.storeImages.removeAllObjects()
      self.storeImages.addObjects(from: images)
      for view  in (self.mainScrollView?.subviews)! {
          view.removeFromSuperview()
      }
      var originX:CGFloat = 0.0
      for model in images
      {
          let imageView = UIImageView(frame: CGRect(x:originX, y:0.0, width:SCREEN_WIDTH, height:self.height))
          let url = URL(string: model.storeSmallImg!)
          let image = UIImage(named: "default_icon")
          // weak var weakSelf = self
          imageView.sd_setImage(with: url, placeholderImage: image, options: .retryFailed, completed: { (image, error, cacheType, URL) in
          })
          //添加UI Image View的點擊事情
          let tap = UITapGestureRecognizer(target: self, action: #selector(onClickedImageEvent(gest:)))
          imageView.isUserInteractionEnabled = true            
          imageView.addGestureRecognizer(tap)            
          //主要是顯示區分顯示大點的圖和小點的圖
          if isMiddleShow == true{                
              let contentView = UIView(frame: CGRect(x:originX, y:0.0, width:self.width, height:self.height))
              let imagexx = (SCREEN_WIDTH - self.height)/2                
              imageView.frame = CGRect(x:imagexx, y:0.0, width:self.height, height:self.height)                
              contentView.addSubview(imageView)
              self.mainScrollView?.addSubview(contentView)
              originX = (contentView.frame.minX + contentView.frame.width)
          }
          else
          {
              self.mainScrollView?.addSubview(imageView)                
              originX = (imageView.frame.minX + imageView.frame.width)
          }
      }
      self.mainScrollView?.contentSize = CGSize(width: originX, height: self.height)        
      self.mainPageControl?.numberOfPages = images.count // 總頁數
      self.mainPageControl?.currentPage = 0 // 當前頁數,默認為0,即第一個,實際數量是0~n-1        
  }    
  func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
      MQLog(message:"6 scrollViewDidEndDecelerating")        
      let width = scrollView.frame.width
      let offsetX = scrollView.contentOffset.x
      let index = offsetX / width
      MQLog(message:"當前頁是:\(index)")        
      self.mainPageControl?.currentPage = Int(index)
  }    
  func addTimer()
  {
      self.mainTimer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(autoShow), userInfo: nil, repeats: true)
  }    
  func removerTimer()
  {
      if self.mainTimer != nil
      {
          self.mainTimer?.invalidate()
          self.mainTimer = nil
      }
  }
  func autoShow()
  {
      var page:Int = (self.mainPageControl?.currentPage)!
      let total = (self.mainPageControl?.numberOfPages)! - 1
      if total == page
      {
          page = 0
      }
      else
      {
          page += 1
      }
      
      // 設置偏移量
      let offsetX = CGFloat(page) * (self.mainScrollView?.frame)!.width
      self.mainScrollView?.setContentOffset(CGPoint(x:offsetX, y:0.0), animated: true)
      self.mainPageControl?.currentPage = page
  }
  func onClickedImageEvent(gest:UITapGestureRecognizer) {        
      let browser = SDPhotoBrowser()        
      //顯示圖片UIImageView的父控件
      browser.sourceImagesContainerView =  self.mainScrollView        
      //顯示圖片的總數量
      browser.imageCount = self.storeImages.count        
      if self.storeImages.count > (self.mainPageControl?.currentPage)! {
          browser.currentImageIndex = (self.mainPageControl?.currentPage)!
      }
      else
      {
          //要顯示的當前圖片下標位置
          browser.currentImageIndex = 0
      }
      
      browser.delegate = self
      browser.show()
  }    
  /**************************************************************/
  //返回當前UIImageView顯示的圖片
  func photoBrowser(_ browser: SDPhotoBrowser!, placeholderImageFor index: Int) -> UIImage! {
      if self.isMiddleShow{
          let contentView = self.mainScrollView?.subviews[index]
          let imageView:UIImageView = contentView?.subviews[0]as! UIImageView
          return imageView.image
      }
      else
      {
          let imageView:UIImageView = self.mainScrollView?.subviews[index]as! UIImageView
          return imageView.image
      }
  }
  //設置要顯示圖片資源的地址
  func photoBrowser(_ browser: SDPhotoBrowser!, highQualityImageURLFor index: Int) -> URL! {
      let model = self.storeImages[index] as! StoreImageModel
      let url = URL(string: model.storeBigImg!)
      return url
  }
}

運行結果:以上圖片資源的地址就不提供了,是公司的資源,百度隨便找幾張圖片就可以了

swift使用SDPhotoBriwser瀏覽圖片教程

swift使用SDPhotoBriwser瀏覽圖片教程

以上就是swift使用SDPhotoBriwser瀏覽圖片教程的詳細內容,更多關于使用SDPhotoBriwser瀏覽圖片的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/moqj_123/article/details/75092270

延伸 · 閱讀

精彩推薦
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
主站蜘蛛池模板: 亚洲天堂男人网 | 亚洲男人的天堂在线 | 亚洲精品久久久久AV无码 | 369看片网| xxx老妇人60| 日韩欧美综合在线二区三区 | 国产青草亚洲香蕉精品久久 | 国产美女屁股直流白浆视频无遮挡 | 九九99热久久999精品 | 动漫美女3d被爆漫画 | 91亚洲精品久久91综合 | 国产乱子伦在线观看不卡 | 91视频破解 | 牛牛色婷婷在线视频播放 | 免费观看一区二区 | 国产美女亚洲精品久久久综合91 | 王的视频vk| 91在线 在线播放 | 福利片福利一区二区三区 | 国产成人精品曰本亚洲77美色 | 男女车车好快的车车免费网站 | 2018天天拍拍拍免费视频 | 欧美一区a | 黑人biglackon10十 | 日本老妇和子乱视频 | 亚洲精品一区二区三区在线看 | 惩罚狠h调教灌满 | 3d蒂法精品啪啪一区二区免费 | 黑人与欧洲女子性大战 | 青青青视频免费观看 | 日剧整部剧护妻狂魔免费观看全集 | 成人亚洲欧美日韩中文字幕 | 国产大神91一区二区三区 | 美女被灌浣肠失禁视频 | 蜜桃传媒在线 | 99热成人精品热久久669 | 91短视频在线免费观看 | 亚洲成年男人的天堂网 | 色吧欧美 | 欧美日韩视频在线一区二区 | 3344在线看片 |