最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

swift使用SDPhotoBriwser瀏覽圖片教程

 更新時(shí)間:2021年10月28日 12:00:56   作者:Foreveroriginal  
這篇文章主要為大家介紹了swift如何使用SDPhotoBriwser瀏覽圖片的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

場景:我們在使用app的時(shí)候,特別是顯示多張圖片的時(shí)候,都會點(diǎn)擊圖片并進(jìn)行瀏覽,比如QQ、微信,好友發(fā)表的動態(tài),我們都會點(diǎn)擊進(jìn)去查看原圖?,F(xiàn)在很多app都支持圖片瀏覽功能,這樣更加方便用戶體驗(yàn),那么我們在項(xiàng)目開發(fā)過程中,怎么對圖片點(diǎn)擊進(jìn)行預(yù)覽,下面介紹一下在swift項(xiàng)目開發(fā)中使用SDPhotoBrowser進(jìn)行圖片瀏覽。

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

下面直接代碼進(jìn)行說明

//
//  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                
        // 自適應(yīng)父視圖
        // self.mainScrollView.autoresizingMask = UIViewAutoresizing.FlexibleHeight
        // 其他屬性
        self.mainScrollView?.isScrollEnabled = true // 上下滾動
        self.mainScrollView?.scrollsToTop = true // 點(diǎn)擊狀態(tài)欄時(shí),可以滾動回頂端
        self.mainScrollView?.bounces = true // 在最頂端或最底端時(shí),仍然可以滾動,且釋放后有動畫返回效果
        mainScrollView?.isPagingEnabled = true // 分頁顯示效果
        mainScrollView?.showsHorizontalScrollIndicator = false // 顯示水平滾動條
        mainScrollView?.showsVerticalScrollIndicator = true // 顯示垂直滾動條
        mainScrollView?.indicatorStyle = UIScrollViewIndicatorStyle.white // 滑動條的樣式
        // 設(shè)置內(nèi)容大小
        // 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        
        // 其他屬性設(shè)置
        self.mainPageControl?.numberOfPages = 0 // 總頁數(shù)
        self.mainPageControl?.currentPage = 0 // 當(dāng)前頁數(shù),默認(rèn)為0,即第一個(gè),實(shí)際數(shù)量是0~n-1
        self.mainPageControl?.pageIndicatorTintColor = UIColor.lightGray // 非當(dāng)前頁顏色
        self.mainPageControl?.currentPageIndicatorTintColor = UIColor.red // 當(dāng)前頁顏色 
    }    
    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的點(diǎn)擊事情
            let tap = UITapGestureRecognizer(target: self, action: #selector(onClickedImageEvent(gest:)))
            imageView.isUserInteractionEnabled = true            
            imageView.addGestureRecognizer(tap)            
            //主要是顯示區(qū)分顯示大點(diǎn)的圖和小點(diǎn)的圖
            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 // 總頁數(shù)
        self.mainPageControl?.currentPage = 0 // 當(dāng)前頁數(shù),默認(rèn)為0,即第一個(gè),實(shí)際數(shù)量是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:"當(dāng)前頁是:\(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
        }
        
        // 設(shè)置偏移量
        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        
        //顯示圖片的總數(shù)量
        browser.imageCount = self.storeImages.count        
        if self.storeImages.count > (self.mainPageControl?.currentPage)! {
            browser.currentImageIndex = (self.mainPageControl?.currentPage)!
        }
        else
        {
            //要顯示的當(dāng)前圖片下標(biāo)位置
            browser.currentImageIndex = 0
        }
        
        browser.delegate = self
        browser.show()
    }    
    /**************************************************************/
    //返回當(dāng)前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
        }
    }
    //設(shè)置要顯示圖片資源的地址
    func photoBrowser(_ browser: SDPhotoBrowser!, highQualityImageURLFor index: Int) -> URL! {
        let model = self.storeImages[index] as! StoreImageModel
        let url = URL(string: model.storeBigImg!)
        return url
    }
}

運(yùn)行結(jié)果:以上圖片資源的地址就不提供了,是公司的資源,百度隨便找?guī)讖垐D片就可以了

以上就是swift使用SDPhotoBriwser瀏覽圖片教程的詳細(xì)內(nèi)容,更多關(guān)于使用SDPhotoBriwser瀏覽圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Swift 5.1 之類型轉(zhuǎn)換與模式匹配的教程詳解

    Swift 5.1 之類型轉(zhuǎn)換與模式匹配的教程詳解

    這篇文章主要介紹了Swift 5.1 之類型轉(zhuǎn)換與模式匹配的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 在Swift程序中實(shí)現(xiàn)手勢識別的方法

    在Swift程序中實(shí)現(xiàn)手勢識別的方法

    這篇文章主要介紹了在Swift程序中實(shí)現(xiàn)手勢識別的方法,蘋果的Swift語言即將進(jìn)入2.0開源階段,人氣爆棚中:D 需要的朋友可以參考下
    2015-07-07
  • Swift實(shí)現(xiàn)復(fù)數(shù)計(jì)算器

    Swift實(shí)現(xiàn)復(fù)數(shù)計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)復(fù)數(shù)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解Swift的內(nèi)存管理

    詳解Swift的內(nèi)存管理

    這篇文章主要介紹了Swift的內(nèi)存管理,對內(nèi)存管理感興趣的同學(xué),可以參考下
    2021-04-04
  • Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解

    Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解

    這篇文章主要給大家介紹了關(guān)于Swift中defer關(guān)鍵字推遲執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Swift教程之類的析構(gòu)詳解

    Swift教程之類的析構(gòu)詳解

    這篇文章主要介紹了Swift教程之類的析構(gòu)詳解,在一個(gè)類的實(shí)例被釋放之前,析構(gòu)函數(shù)會被調(diào)用,本文即講解了析構(gòu)過程原理、析構(gòu)器操作等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Swift使用Cocoa中的數(shù)據(jù)類型教程

    Swift使用Cocoa中的數(shù)據(jù)類型教程

    這篇文章主要介紹了Swift使用Cocoa中的數(shù)據(jù)類型教程,Swift 會自動將一些 Objective-C 類型轉(zhuǎn)換為 Swift 類型,以及將 Swift 類型轉(zhuǎn)換為 Objective-C 類型,需要的朋友可以參考下
    2014-07-07
  • Swift?Error重構(gòu)優(yōu)化詳解

    Swift?Error重構(gòu)優(yōu)化詳解

    這篇文章主要為大家介紹了Swift?Error的問題解決及重構(gòu)優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift map和filter函數(shù)原型基礎(chǔ)示例

    Swift map和filter函數(shù)原型基礎(chǔ)示例

    這篇文章主要為大家介紹了Swift map和filter函數(shù)原型基礎(chǔ)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 深入淺出的聊聊Swift高階函數(shù)

    深入淺出的聊聊Swift高階函數(shù)

    函數(shù)式編程就是高階函數(shù)編程的應(yīng)用,所以要熟練掌握基礎(chǔ)的高階函數(shù)是必須的filter、map、reduce、flatmap就是必備的高階函數(shù),這篇文章主要給大家介紹了關(guān)于Swift高階函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評論

周口市| 祁连县| 荔波县| 荣成市| 唐河县| 那坡县| 贡山| 宣城市| 澄迈县| 孝昌县| 札达县| 河北区| 敖汉旗| 罗城| 安图县| 芦山县| 分宜县| 莆田市| 韶关市| 宿州市| 和平区| 刚察县| 阳谷县| 安国市| 道真| 娄底市| 建宁县| 东乡| 巴东县| 依兰县| 玛沁县| 兴国县| 怀柔区| 元谋县| 常德市| 靖远县| 阳江市| 密山市| 宜昌市| 亚东县| 兴城市|