swift使用SDPhotoBriwser瀏覽圖片教程
場(chǎng)景:我們?cè)谑褂胊pp的時(shí)候,特別是顯示多張圖片的時(shí)候,都會(huì)點(diǎn)擊圖片并進(jìn)行瀏覽,比如QQ、微信,好友發(fā)表的動(dòng)態(tài),我們都會(huì)點(diǎn)擊進(jìn)去查看原圖。現(xiàn)在很多app都支持圖片瀏覽功能,這樣更加方便用戶體驗(yàn),那么我們?cè)陧?xiàng)目開(kāi)發(fā)過(guò)程中,怎么對(duì)圖片點(diǎn)擊進(jìn)行預(yù)覽,下面介紹一下在swift項(xiàng)目開(kāi)發(fā)中使用SDPhotoBrowser進(jìn)行圖片瀏覽。
SDPhotoBrowser地址:https://github.com/gsdios/SDPhotoBrowser
下面直接代碼進(jìn)行說(shuō)明
// // 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 // 上下滾動(dòng) self.mainScrollView?.scrollsToTop = true // 點(diǎn)擊狀態(tài)欄時(shí),可以滾動(dòng)回頂端 self.mainScrollView?.bounces = true // 在最頂端或最底端時(shí),仍然可以滾動(dòng),且釋放后有動(dòng)畫(huà)返回效果 mainScrollView?.isPagingEnabled = true // 分頁(yè)顯示效果 mainScrollView?.showsHorizontalScrollIndicator = false // 顯示水平滾動(dòng)條 mainScrollView?.showsVerticalScrollIndicator = true // 顯示垂直滾動(dòng)條 mainScrollView?.indicatorStyle = UIScrollViewIndicatorStyle.white // 滑動(dòng)條的樣式 // 設(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 // 總頁(yè)數(shù) self.mainPageControl?.currentPage = 0 // 當(dāng)前頁(yè)數(shù),默認(rèn)為0,即第一個(gè),實(shí)際數(shù)量是0~n-1 self.mainPageControl?.pageIndicatorTintColor = UIColor.lightGray // 非當(dāng)前頁(yè)顏色 self.mainPageControl?.currentPageIndicatorTintColor = UIColor.red // 當(dāng)前頁(yè)顏色 } 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 // 總頁(yè)數(shù) self.mainPageControl?.currentPage = 0 // 當(dāng)前頁(yè)數(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)前頁(yè)是:\(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瀏覽圖片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Swift?中的?RegexBuilder學(xué)習(xí)指南
這篇文章主要為大家介紹了Swift中的RegexBuilder學(xué)習(xí)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04詳談swift內(nèi)存管理中的引用計(jì)數(shù)
下面小編就為大家?guī)?lái)一篇詳談swift內(nèi)存管理中的引用計(jì)數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Swift中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記
和C++一樣,Swfit中同時(shí)擁有類與結(jié)構(gòu)體,能夠充分滿足開(kāi)發(fā)者面向?qū)ο蠛兔嫦蜻^(guò)程編程的需求,這里我們就來(lái)看一下Swift中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記2016-07-07Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
這篇文章主要給大家介紹了關(guān)于Swift中defer關(guān)鍵字推遲執(zhí)行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03