Swift图片浏览之SDPhotoBrowser的使用

Swift图片浏览之SDPhotoBrowser的使用,第1张

概述场景:我们在使用app的时候,特别是显示多张图片的时候,都会点击图片并进行浏览,比如QQ、微信,好友发表的动态,我们都会点击进去查看原图。现在很多app都支持图片浏览功能,这样更加方便用户体验,那么我们在项目开发过程中,怎么对图片点击进行预览,下面介绍一下在swift项目开发中使用SDPhotoBrowser进行图片浏览。 SDPhotoBrowser地址:https://github.com/g

场景:我们在使用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,wIDth:self.wIDth,height:self.height))                let imagexx = (SCREEN_WIDTH - self.height)/2                                imageVIEw.frame = CGRect(x:imagexx,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图片浏览之SDPhotoBrowser的使用全部内容,希望文章能够帮你解决Swift图片浏览之SDPhotoBrowser的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060789.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存