123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- //
- // File.swift
- // MTImagePicker
- //
- // Created by Luo on 9/9/16.
- // Copyright © 2016 Luo. All rights reserved.
- //
- import UIKit
- @objc public enum MTImagePickerMediaType: Int {
- case Photo
- case Video
- }
- @objc public protocol MTImagePickerControllerDelegate: NSObjectProtocol {
- // Implement it when setting source to MTImagePickerSource.ALAsset
- @objc optional func imagePickerController(picker: MTImagePickerController, didFinishPickingWithAssetsModels models: [MTImagePickerAssetsModel])
- // Implement it when setting source to MTImagePickerSource.Photos
- @available(iOS 8.0, *)
- @objc optional func imagePickerController(picker: MTImagePickerController, didFinishPickingWithPhotosModels models: [MTImagePickerPhotosModel])
- @objc optional func imagePickerControllerDidCancel(picker: MTImagePickerController)
- }
- public class MTImagePickerController: UINavigationController {
- public weak var imagePickerDelegate: MTImagePickerControllerDelegate? {
- get {
- return self._delegate
- }
- set {
- self._delegate = newValue
- self.albumController?.delegate = newValue
- }
- }
- public var mediaTypes: [MTImagePickerMediaType] {
- get {
- return self._mediaTypes
- }
- set {
- self._mediaTypes.removeAll()
- if newValue.contains(.Photo) {
- self._mediaTypes.append(.Photo)
- }
- if newValue.contains(.Video) {
- self._mediaTypes.append(.Video)
- }
- self.albumController?.mediaTypes = self._mediaTypes
- }
- }
- public var maxCount: Int {
- get {
- return self._maxCount
- }
- set {
- if newValue > 0 {
- self._maxCount = newValue
- self.albumController?.maxCount = newValue
- }
- }
- }
- public var defaultShowCameraRoll: Bool {
- get {
- return self._defaultAll
- }
- set {
- self._defaultAll = newValue
- }
- }
- public var source: MTImagePickerSource {
- get {
- return self._source
- }
- set {
- self._source = newValue
- if newValue == .Photos {
- if #available(iOS 8.0, *) {
- } else {
- self._source = .ALAsset
- }
- }
- self.albumController?.source = self._source
- }
- }
- public var mediaTypesNSArray: NSArray {
- get {
- let arr = NSMutableArray()
- for mediaType in self.mediaTypes {
- arr.add(mediaType.rawValue)
- }
- return arr
- }
- set {
- self.mediaTypes.removeAll()
- for mediaType in newValue {
- if let intType = mediaType as? Int {
- if intType == 0 {
- self.mediaTypes.append(.Photo)
- } else if intType == 1 {
- self.mediaTypes.append(.Video)
- }
- }
- }
- }
- }
- public override func viewWillAppear(_ animated: Bool) {
- if self.defaultShowCameraRoll {
- let controller = MTImagePickerAssetsController.instance
- controller.delegate = self.imagePickerDelegate
- controller.maxCount = self.maxCount
- controller.source = self.source
- MTImagePickerDataSource.fetchDefault(type: self.source, mediaTypes: self.mediaTypes) {
- controller.groupModel = $0
- self.pushViewController(controller, animated: false)
- }
- }
- }
- class var instance: MTImagePickerController {
- get {
- let controller = MTImagePickerAlbumsController.instance
- let navigation = MTImagePickerController(rootViewController: controller)
- navigation.albumController = controller
- return navigation
- }
- }
- public weak var _delegate: MTImagePickerControllerDelegate?
- private var _mediaTypes = [MTImagePickerMediaType.Photo]
- private var _maxCount: Int = Int.max
- private var _defaultAll: Bool = true
- private var _source = MTImagePickerSource.ALAsset
- private weak var albumController: MTImagePickerAlbumsController?
- }
|