Commit 13484f37 authored by David黄金龙's avatar David黄金龙

Merge commit 'afb9da78' into davidhuang

* commit 'afb9da78':
  // 我的证书
parents 658d1d4d afb9da78
......@@ -9,6 +9,7 @@
import UIKit
import JXSegmentedView
import UniformTypeIdentifiers
import IQKeyboardManagerSwift
class YHCertificateResourceUploadVC: YHBaseViewController {
......@@ -33,30 +34,6 @@ class YHCertificateResourceUploadVC: YHBaseViewController {
return tableView
}()
lazy var documentPickerVC: UIDocumentPickerViewController = {
let docTypes = [ "public.image",
"com.adobe.pdf",
"com.microsoft.word.doc",
"com.microsoft.powerpoint.ppt"]
if #available(iOS 14.0, *) {
var arr:[UTType] = []
for docStr in docTypes {
if let type = UTType(docStr) {
arr.append(type)
}
}
let docPickerVC = UIDocumentPickerViewController(forOpeningContentTypes: arr)
docPickerVC.delegate = self
return docPickerVC
}
let docPickerVC = UIDocumentPickerViewController(documentTypes: docTypes, in: .open)
docPickerVC.delegate = self
return docPickerVC
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
......@@ -96,12 +73,22 @@ extension YHCertificateResourceUploadVC: UITableViewDelegate, UITableViewDataSou
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// if true {
//
// selectUploadFileFromICouldDrive()
// return
// }
if true {
selectUploadFileFromICouldDrive()
return
YHCertificateUploadSheetView.sheetView.show {
[weak self] actionType in
guard let self = self else { return }
print("%d", actionType.rawValue)
}
return
}
YHCertificateFilterView.sheetView.show()
return
......@@ -135,51 +122,3 @@ extension YHCertificateResourceUploadVC: JXSegmentedListContainerViewListDelegat
return view
}
}
extension YHCertificateResourceUploadVC: UIDocumentPickerDelegate {
private func selectUploadFileFromICouldDrive() {
present(documentPickerVC, animated: true)
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first, let fileName = url.lastPathComponent.removingPercentEncoding else {
return
}
print("\(url)")
// 读取文件数据
// 获取授权
let fileUrlAuthozied = url.startAccessingSecurityScopedResource()
if fileUrlAuthozied {
// 通过文件协调工具来得到新的文件地址,以此得到文件保护功能
let fileCoordinator = NSFileCoordinator()
var error: NSError?
fileCoordinator.coordinate(readingItemAt: url, options:[.forUploading], error: &error) {
newFileUrl in
if let fileData = try? Data(contentsOf: newFileUrl) {
// 将文件数据上传到服务器
uploadFile(fileData)
}
}
url.stopAccessingSecurityScopedResource()
if let error = error {
}
} else {
print("授权失败")
}
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
}
func uploadFile(_ data: Data) {
let format = String(format: "%.2fM", Double(data.count)/(1024.0 * 1024.0))
print("\(format)")
}
}
......@@ -17,6 +17,7 @@
*/
import UIKit
import Photos
enum YHCertificateUploadType: Int {
......@@ -182,6 +183,7 @@ class YHCertificateUploadSheetView: UIView {
static let sheetView = YHCertificateUploadSheetView(frame:UIScreen.main.bounds)
var action:((YHCertificateUploadType)->())?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
......@@ -259,6 +261,32 @@ class YHCertificateUploadSheetView: UIView {
return view
}()
lazy var documentPickerVC: UIDocumentPickerViewController = {
let docTypes = [ "public.image",
"com.adobe.pdf",
"com.microsoft.word.doc",
"org.openxmlformats.wordprocessingml.document",
"com.microsoft.powerpoint.ppt",
"org.openxmlformats.presentationml.presentation",]
if #available(iOS 14.0, *) {
var arr:[UTType] = []
for docStr in docTypes {
if let type = UTType(docStr) {
arr.append(type)
}
}
let docPickerVC = UIDocumentPickerViewController(forOpeningContentTypes: arr)
docPickerVC.delegate = self
return docPickerVC
}
let docPickerVC = UIDocumentPickerViewController(documentTypes: docTypes, in: .open)
docPickerVC.delegate = self
return docPickerVC
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
......@@ -345,9 +373,140 @@ extension YHCertificateUploadSheetView {
if let targetView = sender.view {
let tag = targetView.tag
if let type = YHCertificateUploadType(rawValue:tag), let action = action {
action(type)
if type == .photo {
selectPhoto()
} else if type == .camera {
takePhoto()
} else if type == .phoneFile {
selectFile()
}
}
}
}
}
extension YHCertificateUploadSheetView: (UIImagePickerControllerDelegate & UINavigationControllerDelegate) {
private func getPhotoLibraryAuthorization() -> Bool {
let authorizationStatus = PHPhotoLibrary.authorizationStatus()
switch authorizationStatus {
case .authorized:
print("已经授权")
return true
case .notDetermined:
print("不确定是否授权")
// 请求授权
PHPhotoLibrary.requestAuthorization({ (status) in })
case .denied:
print("拒绝授权")
case .restricted:
print("限制授权")
break
case .limited: break
@unknown default:
break
}
return false
}
func takePhoto() {
guard getPhotoLibraryAuthorization() else { return }
if UIImagePickerController.isSourceTypeAvailable(.camera){
//创建图片控制器
let imagePicker = UIImagePickerController()
//设置代理
imagePicker.delegate = self
//设置来源
imagePicker.sourceType = .camera
//打开相机
UIViewController.current?.present(imagePicker, animated: true, completion: { () -> Void in
})
} else {
printLog("找不到相机")
}
}
func selectPhoto() {
guard getPhotoLibraryAuthorization() else { return }
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
// 这一句,开始调用图库
UIViewController.current?.present(imagePicker,animated: true)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
// if let block = backImage {
// block(image)
self.dismiss()
// }
} else {
printLog("pick image wrong")
}
// 收回图库选择界面
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
}
extension YHCertificateUploadSheetView: UIDocumentPickerDelegate {
func selectFile() {
UIViewController.current?.present(documentPickerVC, animated: true, completion: nil)
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first, let fileName = url.lastPathComponent.removingPercentEncoding else {
return
}
print("\(url)")
// 读取文件数据
// 获取授权
let fileUrlAuthozied = url.startAccessingSecurityScopedResource()
if fileUrlAuthozied {
// 通过文件协调工具来得到新的文件地址,以此得到文件保护功能
let fileCoordinator = NSFileCoordinator()
var error: NSError?
fileCoordinator.coordinate(readingItemAt: url, options:[.forUploading], error: &error) {
newFileUrl in
if let fileData = try? Data(contentsOf: newFileUrl) {
// 将文件数据上传到服务器
uploadFile(fileData)
dismiss()
}
}
url.stopAccessingSecurityScopedResource()
if let error = error {
}
} else {
print("授权失败")
dismiss()
}
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
}
func uploadFile(_ data: Data) {
let format = String(format: "%.2fM", Double(data.count)/(1024.0 * 1024.0))
print("\(format)")
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment