DTMediasViewController 1.0.2

DTMediasViewController 1.0.2

测试已测试
语言语言 SwiftSwift
证书 MIT
发布最后发布2017年6月
SwiftSwift 版本3.0
SPM支持 SPM

Dan JiangDan Jiang 维护。



DTMediasViewController

简介

Demo

浏览照片、GIF 和视频。左右滑动查看下一张或上一张。捏合缩放照片和 GIF。带有控制按钮的视频,可以播放或暂停。单击应关闭视图控制器。

安装

要求

iOS 8.4+

使用

导入

import DTMediasViewController

加载本地和远程媒体混合集

class ViewController: UIViewController {
  
  fileprivate let session = URLSession.shared
  fileprivate let medias = [DTMedia(data: try! Data(contentsOf: Bundle.main.url(forResource: "animate", withExtension: "gif")!)),
                        DTMedia(image: UIImage(named: "apple-keynote")!),
                        DTMedia(type: .video, url: URL(string: "https://ob0h37q93.qnssl.com/waiting.mp4?avvod/m3u8/pipeline/da/s/960x640/vb/1000k")!),
                        DTMedia(type: .gif, url: URL(string: "http://www.uimaker.com/uploads/allimg/141226/101RIF6-3.gif?imageView2/2/q/90")!),
                        DTMedia(type: .photo, url: URL(string: "http://img5.imgtn.bdimg.com/it/u=1879925847,3681677304&fm=11&gp=0.jpg")!)]
  fileprivate let placeholderImage = UIImage(named: "placeholder_large")
  
  override func viewDidLoad() {
    super.viewDidLoad()
  }
  
  @IBAction func showMedias(_ sender: AnyObject) {
    let mediasViewController = DTMediasViewController(medias: medias, photoPlaceholderImage: placeholderImage, gifPlaceholderImage: placeholderImage, currentPage: 0)
    mediasViewController.handler = self
    showDetailViewController(mediasViewController, sender: nil)
  }
  
}

// MARK - DTPhotosViewControllerPhotosURLHandler

extension ViewController: DTMediasViewControllerPhotoURLHandler {
  
    func mediasViewController(_ mediasViewController: DTMediasViewController, photo: DTMedia, viewController: UIViewController) {
    let task = session.dataTask(with: photo.url!) { (data, response, error) in
      if let error = error {
        print(error)
      } else if let data = data {
        DispatchQueue.main.async {
          var newPhoto = photo
          if newPhoto.type == .gif {
            newPhoto.data = data
            mediasViewController.setPhoto(newPhoto, forViewController: viewController)
          } else if let image = UIImage(data: data) {
            newPhoto.image = image
            mediasViewController.setPhoto(newPhoto, forViewController: viewController)
          }
        }
      }
    }
    task.resume()
  }
  
}