美文网首页
相册选取图片封装

相册选取图片封装

作者: ngugg | 来源:发表于2018-12-10 11:00 被阅读8次

class CameraHandler: NSObject {
static let shared = CameraHandler()
fileprivate var currentVC: UIViewController!

//MARK: Internal Properties
var imagePickedClourse: ((UIImage) -> Void)?

func photoLibrary(){
    if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
        let photoPicker = UIImagePickerController()
        photoPicker.delegate = self
        photoPicker.allowsEditing = true
        photoPicker.sourceType = .photoLibrary
        currentVC.present(photoPicker, animated: true, completion: nil)
    }
}
func camera()
{
    if UIImagePickerController.isSourceTypeAvailable(.camera){
        let myPickerController = UIImagePickerController()
        myPickerController.delegate = self;
        myPickerController.sourceType = .camera
        currentVC.present(myPickerController, animated: true, completion: nil)
    }
    
}
func showActionSheet(vc: UIViewController) -> Self {
    currentVC = vc
    currentVC.popActionSheet("拍照", { _ in
        self.camera()
    }, "从手机相册选择") { _ in
        self.photoLibrary()
    }
    return self

}

}
extension CameraHandler: UIImagePickerControllerDelegate, UINavigationControllerDelegate{

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    currentVC.dismiss(animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    if let image = info[.originalImage] as? UIImage {
        self.imagePickedClourse?(image)
    } else if let image = info[.editedImage] as? UIImage {
        self.imagePickedClourse?(image)
    } else {
        print("Something went wrong")
    }
    currentVC.dismiss(animated: true, completion: nil)
}

}

时间选取

class BaseSelecteViewController: UIViewController {

let bottomView = UIView(backgroundColor: .white)

let cancelBtn = UIButton("取消", titleColor: .black, fontSize: 20).add(self, action: #selector(tapClick))
let confirmBtn = UIButton("确定", titleColor: .black, fontSize: 20).add(self, action: #selector(clickConfirmButton))

override func viewDidLoad() {
    super.viewDidLoad()
    setupUI()
}
func setupUI() {
    view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
    let tap = UITapGestureRecognizer(target: self, action: #selector(tapClick))
    view.addGestureRecognizer(tap)
    tap.delegate = self
    
    view.addSubview(bottomView)
    bottomView.addSubview(cancelBtn)
    bottomView.addSubview(confirmBtn)
    
    bottomView.snp.makeConstraints { (make) in
        make.left.right.bottom.equalTo(0)
        make.height.equalTo(300)
    }
    cancelBtn.snp.makeConstraints { (make) in
        make.top.left.equalTo(15)
        make.width.equalTo(50)
    }
    confirmBtn.snp.makeConstraints { (make) in
        make.top.equalTo(10)
        make.right.equalTo(-15)
        make.width.equalTo(50)
    }
}

}

// MARK: - 页面逻辑交互
extension BaseSelecteViewController {
@objc func tapClick() {
view.removeFromSuperview()
self.removeFromParent()
}
@objc func clickConfirmButton() {
cm_log("确认")
}
}

extension BaseSelecteViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if let _ = touch.view?.isDescendant(of: bottomView) {
return false
}
return true
}
}

时间选择

class SelectTimeHandler: BaseSelecteViewController {

var datePicker: UIDatePicker!
var completion: ((String) -> ())!

init(_ completion: @escaping (String) -> ()) {
    self.completion = completion
    super.init(nibName: nil, bundle: nil)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func setupUI() {
    super.setupUI()
    
    datePicker = {
        let dp = UIDatePicker().addTo(bottomView)
        dp.datePickerMode = UIDatePicker.Mode.dateAndTime
        dp.locale = Locale(identifier: "zh_CN") //设置为中文
        return dp
    }()

    datePicker.snp.makeConstraints { (make) in
        make.left.right.bottom.equalTo(view)
        make.height.equalTo(200)
    }
}
override func clickConfirmButton() {
    completion(datePicker.date.toymdhm)
    tapClick()
}

}

相关文章

网友评论

      本文标题:相册选取图片封装

      本文链接:https://www.haomeiwen.com/subject/lskrhqtx.html