// // 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}) } }