代码为:
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
var imgV:UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imgV = UIImageView(image: UIImage(named: "me"))
imgV.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
self.view.addSubview(imgV)
imgV.isUserInteractionEnabled = true
imgV.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(headImgvAction)))
// Do any additional setup after loading the view.
}
//MARK: - 选取头像操作
@objc func headImgvAction() {
let alertSheet = UIAlertController.init(title: "提示", message: "选择项目图片", preferredStyle: .actionSheet)
let takePhoto = UIAlertAction.init(title: "拍照", style: .destructive) { (alertAction) in
self.takePhoto()
}
let getPic = UIAlertAction.init(title: "从相册选取", style: .default) { (alertAction) in
self.getPic()
}
let cancel = UIAlertAction.init(title: "取消", style: .cancel) { (alertAction) in
}
alertSheet.addAction(takePhoto)
alertSheet.addAction(getPic)
alertSheet.addAction(cancel)
self.present(alertSheet, animated: true) {
}
}
///打开相机操作
func takePhoto() {
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let picController = UIImagePickerController()
picController.sourceType = .camera
picController.delegate = self
picController.allowsEditing = false
self.present(picController, animated: true, completion: nil)
} else {
// print("相机不可用")
}
}
func getPic(){
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let picController = UIImagePickerController()
picController.delegate = self
picController.sourceType = .photoLibrary
picController.allowsEditing = false
self.present(picController, animated: true, completion: nil)
} else {
// print("相册不可用")
}
}
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let resultImg = info["UIImagePickerControllerOriginalImage"] as! UIImage
imgV.image = resultImg
picker.dismiss(animated: true) {
}
}
}
之前是在func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])这个函数前面加了private
导致根本就不执行。解决方法是将private 改成@objc 可以说是很难发现的bug了。我下午在测试的时候懵逼了好久。后来在``` https://stackoverflow.com/questions/44465904/photopicker-discovery-error-error-domain-pluginkit-code-13








网友评论