123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- //
- // PhotoManager.swift
- // CreaditPayment
- //
- // Created by 南鑫林 on 2018/12/19.
- // Copyright © 2018 南鑫林. All rights reserved.
- //
- import UIKit
- import SwiftyMediator
- class PhotoAndCameraManager: NSObject {
- private static let _sharedInstance = PhotoAndCameraManager()
- private override init() {} // 私有化init方法
- class func shared() -> PhotoAndCameraManager {
- return _sharedInstance
- }
- typealias PhotoAndCameraManagerImageBlock = (_ image: UIImage) -> Void
- var photoAndCameraManagerImageBlock : PhotoAndCameraManagerImageBlock?
- var isEditedImage : Bool = true
- /// 相册
- func authorizePhoto() {
- weak var weakself = self
- LBXPermissions.authorizePhotoWith { (granted) in
- if granted {
- let picker = UIImagePickerController()
- picker.sourceType = UIImagePickerController.SourceType.photoLibrary
- picker.delegate = weakself
- picker.allowsEditing = weakself?.isEditedImage ?? true
- picker.navigationController?.navigationBar.isTranslucent = false
- if #available(iOS 11.0, *) {
- UIScrollView.appearance().contentInsetAdjustmentBehavior = .automatic
- } else {
- if self.responds(to: #selector(setter: picker.automaticallyAdjustsScrollViewInsets)) {
- picker.automaticallyAdjustsScrollViewInsets = true
- }
- }
- picker.modalPresentationStyle = .fullScreen
- UIViewController.topMost?.present(picker, animated: true, completion: nil)
- } else {
- LBXPermissions.jumpToSystemPrivacySetting()
- }
- }
- }
- /// 相机
- func authorizeCamera() {
- weak var weakself = self
- LBXPermissions.authorizeCameraWith { (granted) in
- if granted {
- let picker = UIImagePickerController()
- picker.sourceType = UIImagePickerController.SourceType.camera
- picker.delegate = weakself
- picker.allowsEditing = weakself?.isEditedImage ?? true
- picker.navigationController?.navigationBar.isTranslucent = false
- if #available(iOS 11.0, *) {
- UIScrollView.appearance().contentInsetAdjustmentBehavior = .automatic
- } else {
- if self.responds(to: #selector(setter: picker.automaticallyAdjustsScrollViewInsets)) {
- picker.automaticallyAdjustsScrollViewInsets = true
- }
- }
- picker.modalPresentationStyle = .fullScreen
- UIViewController.topMost?.present(picker, animated: true, completion: nil)
- } else {
- LBXPermissions.jumpToSystemPrivacySetting()
- }
- }
- }
- }
- extension PhotoAndCameraManager : UIImagePickerControllerDelegate,UINavigationControllerDelegate {
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
- if #available(iOS 11.0, *) {
- UIScrollView.appearance().contentInsetAdjustmentBehavior = .never
- } else {
- if self.responds(to: #selector(setter: picker.automaticallyAdjustsScrollViewInsets)) {
- picker.automaticallyAdjustsScrollViewInsets = false
- }
- }
- //查看info对象
- //显示的图片
- var image : UIImage? = info[.editedImage] as? UIImage
- if (image == nil ) {
- image = info[.originalImage] as? UIImage
- return
- }
- if self.isEditedImage {
- //获取编辑后的图片
- image = info[.editedImage] as? UIImage
- }else{
- //获取选择的原图
- image = info[.originalImage] as? UIImage
- }
- //图片控制器退出
- picker.dismiss(animated: true, completion: {
- [weak self] () -> Void in
- if self?.photoAndCameraManagerImageBlock != nil {
- self?.photoAndCameraManagerImageBlock!(image!)
- }
- })
- }
-
- func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
- if #available(iOS 11.0, *) {
- UIScrollView.appearance().contentInsetAdjustmentBehavior = .never
- } else {
- if self.responds(to: #selector(setter: picker.automaticallyAdjustsScrollViewInsets)) {
- picker.automaticallyAdjustsScrollViewInsets = false
- }
- }
- //图片控制器退出
- picker.dismiss(animated: true, completion: {() -> Void in})
- }
-
- }
|