123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- //
- // SelectedImageView.swift
- // 选择图片,上传到七牛,并加载到页面(UIScrollView)
- //
- // Created by Virgil on 2018/6/14.
- // Copyright © 2018年 Virgil. All rights reserved.
- //
- import UIKit
- class Virgil_SelectedImageView: UIView, UIImagePickerControllerDelegate, UINavigationControllerDelegate, MTImagePickerControllerDelegate {
- @IBOutlet weak var scrollView: UIScrollView!
- var vcSelf: UIViewController!
- private var arrBtns = [UIButton]()
- var maxCount = 3
- var arrImageUrls = [String]()
- ///maxCount 最大图片数 arrDefaultImageUrs:默认图片,无为nil vc:当前Controller
- func initView(maxCount: Int, arrDefaultImageUrs: [String]?, vc: UIViewController) {
- self.maxCount = maxCount
- vcSelf = vc
- loadImageButtons()
- arrImageUrls.removeAll()
- if arrDefaultImageUrs != nil {
- for url in arrDefaultImageUrs! {
- arrImageUrls.append(url)
- }
- }
- scrollView.setSizeWidth(width: self.width())
- reLoadImages()
- }
- ///初始化按钮
- func loadImageButtons() {
- scrollView.removeAll()
- let size = scrollView.frame.height
- var left: CGFloat = 0
- for i in 0 ..< (maxCount + 1) {
- let btn = UIButton(frame: CGRect(x: left, y: 0, width: size, height: size))
- scrollView.addSubview(btn)
- btn.tag = i
- left += size + 10
- btn.isHidden = true
- arrBtns.append(btn)
- btn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
- }
- scrollView.contentSize.width = left
- }
- var btnClickCurrnet = 0
- @objc func btnClick(btn: UIButton) {
- btnClickCurrnet = btn.tag
- //添加按钮
- if btn.tag == arrImageUrls.count {
- if self.arrImageUrls.count >= maxCount {
- CommonUntils.alert(message: "最多只能上传\(maxCount)张照片!")
- return
- }
- CommonUntils.AlertView(controller: vcSelf, title: nil, message: nil, buttons: ["拍照上传", "从相册上传"], style: .actionSheet) {[weak self] (index, _) in
- let ipc = UIImagePickerController()
- if index == 0 {
- ipc.sourceType = .camera
- ipc.delegate = self!
- //默认图片
- // 视频 ipc.mediaTypes = ["public.movie"] //UIImagePickerControllerMediaURL 取
- ipc.allowsEditing = false
- self!.vcSelf.present(ipc, animated: true, completion: nil)
- } else {
- self!.selectImageForPhoto()
- //ipc.sourceType = .photoLibrary
- }
- }
- } else //其他图片按钮
- {
- CommonUntils.AlertView(controller: vcSelf, title: nil, message: nil, buttons: ["删除"], style: .actionSheet) {[weak self] (_, _) in
- self!.arrImageUrls.remove(at: self!.btnClickCurrnet)
- self!.reLoadImages()
- }
- }
- }
- func selectImageForPhoto() {
- var mediaTypes = [MTImagePickerMediaType]()
- mediaTypes.append(MTImagePickerMediaType.Photo)
- let source = MTImagePickerSource.ALAsset
- let vc = MTImagePickerController.instance
- vc.mediaTypes = mediaTypes
- vc.source = source
- vc.imagePickerDelegate = self
- let defaultShowCameraRoll = true
- vc.maxCount = maxCount - self.arrImageUrls.count
- vc.defaultShowCameraRoll = defaultShowCameraRoll
- UIApplication.shared.setStatusBarStyle(.default, animated: false)
- vcSelf.present(vc, animated: true, completion: nil)
- }
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
- vcSelf.dismiss(animated: true) {[weak self] in
- var imgTemp: UIImage? = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
- if picker.allowsEditing {
- imgTemp = info[UIImagePickerController.InfoKey.editedImage] as? UIImage
- }
- if imgTemp != nil {
- self!.uploadImage(img: imgTemp!)
- } else {
- SVProgressHUD.showError(withStatus: "图片选择失败,请重试")
- }
- }
- }
- @available(iOS 8.0, *)
- func imagePickerController(picker: MTImagePickerController, didFinishPickingWithPhotosModels models: [MTImagePickerPhotosModel]) {
- UIApplication.shared.setStatusBarStyle(.lightContent, animated: false)
- //self.dataSource = models
- // self.tableView.reloadData()
- for i in 0 ..< models.count {
- uploadImage(img: models[i].getPreviewImage()!)
- }
- // loadCurrentImage();
- }
- func imagePickerController(picker: MTImagePickerController, didFinishPickingWithAssetsModels models: [MTImagePickerAssetsModel]) {
- UIApplication.shared.setStatusBarStyle(.lightContent, animated: false)
- for i in 0 ..< models.count {
- uploadImage(img: models[i].getPreviewImage()!)
- }
- // loadCurrentImage();
- }
- func uploadImage(img: UIImage) {
- SVProgressHUD.show()
- let uploadFile = QiNiuUploadFile()
- uploadFile.uploadFile(img: img) {[weak self] (type, str) in
- SVProgressHUD.dismiss()
- if type == 1 {
- let userLoginUrl = RequestURL.qiNiuImageUrl + str
- self!.arrImageUrls.append(userLoginUrl)
- self!.reLoadImages()
- } else {
- SVProgressHUD.showError(withStatus: "上传失败")
- }
- }
- }
- ///加载图片
- func reLoadImages() {
- for i in 0 ..< arrBtns.count {
- if i < arrImageUrls.count {
- arrBtns[i].loadBackgroudImage(imgUrl: arrImageUrls[i], defaultImage: "bn-tjzp")
- arrBtns[i].isHidden = false
- arrBtns[i].setCornerRadius(size: 8)
- } else if i == arrImageUrls.count {
- arrBtns[i].setBackgroudImage(name: "bn-tjzp")
- arrBtns[i].isHidden = false
- } else {
- arrBtns[i].isHidden = true
- }
- }
- if arrImageUrls.count > 0 {
- scrollView.contentSize.width = arrBtns[arrImageUrls.count].right() + 10
- } else {
- scrollView.contentSize.width = scrollView.width()
- }
- if scrollView.contentSize.width > scrollView.width() {
- scrollView.contentOffset.x = scrollView.contentSize.width - scrollView.width()
- }
- }
- }
|