如果您想了解Swift4.2imagePickerController问题和swiftuiimage的知识,那么本篇文章将是您的不二之选。我们将深入剖析Swift4.2imagePickerContr
如果您想了解Swift 4.2 imagePickerController问题和swiftui image的知识,那么本篇文章将是您的不二之选。我们将深入剖析Swift 4.2 imagePickerController问题的各个方面,并为您解答swiftui image的疑在这篇文章中,我们将为您介绍Swift 4.2 imagePickerController问题的相关知识,同时也会详细的解释swiftui image的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- Swift 4.2 imagePickerController问题(swiftui image)
- AGImagePickerController
- iOS swift中UIImagePickerControllerDelegate代理不执行问题
- ios – Swift 3中的UIImagePickerController
- ios – Swift 3:在不使用UIImagePickerController的情况下从照片/相机胶卷加载照片
Swift 4.2 imagePickerController问题(swiftui image)
尝试将聊天客户端从swift 4传递到swift 4.2,并使用选择器发现问题。
UIImagePickerControllerEditedImage无法用索引类型为“
UIImagePickerController.InfoKey”的下标“ [String:Any]”的值
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage { self.userProfileImage.contentMode = .scaleAspectFit self.userProfileImage.image = pickedImage } picker.dismiss(animated: true, completion: nil)}
答案1
小编典典方法签名已更改为
func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
您应该看到功能名称的警告消息
实例方法’imagePickerController( :didFinishPickingMediaWithInfo :)’与
协议’UIImagePickerControllerDelegate’的 可选要求 ‘imagePickerController(
:didFinishPickingMediaWithInfo :)’几乎匹配候选人的类型不匹配’(UIImagePickerController,[String:Any])->()’
将’imagePickerController(_:didFinishPickingMediaWithInfo :)’移至另一个扩展名以使此警告静音
将’imagePickerController(_:didFinishPickingMediaWithInfo :)’设为私有可消除此警告
在此处声明的要求’imagePickerController(_:didFinishPickingMediaWithInfo
:)’(UIKit.UIImagePickerControllerDelegate)
AGImagePickerController
AGImagePickerController 介绍
AGImagePickerController 是一个图片选择器,可以同时选择多张图片,支持所有 iOS设备。
AGImagePickerController 官网
https://github.com/arturgrigor/AGImagePickerController
iOS swift中UIImagePickerControllerDelegate代理不执行问题
///代码块1
import UIKit
import MobileCoreServices
import AssetsLibrary
/// 检查设备是否支持相机录制
///
/// - Returns: true or false
public func isSupportCameraRecording() -> Bool {
guard let avTypes: [String] = UIImagePickerController.availableMediaTypes(for: .camera) else {
return false
}
return avTypes.contains(kUTTypeMovie as String)
}
open class cameraVC: NSObject,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
public var cameraVC: UIImagePickerController?
///
public var setCameraDeviceFront: Bool = false
override init() {
super.init()
cameraVC = setupImagePicker()
}
private func setupImagePicker() -> UIImagePickerController {
let camera = UIImagePickerController()
camera.sourceType = UIImagePickerControllerSourceType.camera
camera.mediaTypes = [kUTTypeMovie as String]
camera.videoQuality = .typeHigh
camera.delegate = self
setCameraDeviceFront(picker: camera)
// configureCustomUI(picker: camera)
return camera
}
private func setCameraDeviceFront(picker: UIImagePickerController) {
let defCameraDeviceFront = UIImagePickerController.isCameraDeviceAvailable(.rear)
if setCameraDeviceFront && defCameraDeviceFront {
picker.cameraDevice = .front
}
}
private func configureCustomUI(picker: UIImagePickerController) {
let cameraOverlay = UIView()
picker.showsCameraControls = false
picker.cameraOverlayView = cameraOverlay
}
//MARK: delegate
public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let library = ALAssetsLibrary()
let url: URL = info["UIImagePickerControllerMediaURL"] as! URL
if library.videoAtPathIs(compatibleWithSavedPhotosAlbum: url) {
library.writeVideoAtPath(toSavedPhotosAlbum: url, completionBlock: { ( _, _)in})
}
picker.dismiss(animated: true, completion: nil)
}
}
/// 调用的地方 控制器里面
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if !isSupportCameraRecording() {
return
}
let camera = cameraVC()
/// 如果 camera.cameraVC.delegate = self 写在这里
present(camera.cameraVC!, animated: true, completion: nil)
}
/// 并执行代理方法就会执行,而同样的代码Oc里面不会存在这种情况
如上代码中在相机录制结束后或者点击Cancle 是没有执行代理方法的,而如果把代理方法写在调用的地方,且实现代理方法就会执行,这是什么原因?一样的代码Oc里面却没问题?
ios – Swift 3中的UIImagePickerController
我正在尝试实施Firebase Auth,一切进展顺利.
我的问题:
我正在尝试将图像作为用户的个人资料图片上传到Firebase数据库.
我以为我可以使用UIImagePickerController来做到这一点,但是当我这样做时,我得到了一个
“Thread 7: Signal SIGABRT
我知道这通常表示什么,但我检查了,当我点击它时,我的图像确实打印了我的测试语句.
我失败的方法:
ViewController.swift
import UIKit import Firebase import Photos class ViewController: UIViewController,UITextFieldDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate{ @IBOutlet weak var imageView: UIImageView! @IBOutlet var emailTextField: UITextField! @IBOutlet var passWordTextField: UITextField! @IBOutlet var nameTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() if FIRAuth.auth()?.currentUser?.uid != nil { let storyboard = UIStoryboard(name: "Main",bundle: nil) let view = storyboard.instantiateViewController(withIdentifier: "ProfileViewController") self.present(view,animated: true,completion: nil) } imageView.addGestureRecognizer(UITapGestureRecognizer(target: self,action: #selector(handleSelectProfileImageView))) imageView.isUserInteractionEnabled = true self.emailTextField.delegate = self; self.passWordTextField.delegate = self; self.nameTextField.delegate = self; } func handleSelectProfileImageView() { let picker = UIImagePickerController() picker.delegate = self picker.allowsEditing = true present(picker,completion: nil) }
我不确定这是否只是Swift 3和开发人员Xcode 8 beta的问题,或者我只是对swift 3做错了.
编辑:
我正在使用GM版的xcode8,但仍然会遇到同样的错误.
解决方法
Key : Privacy - Media Library Usage Description Value : YES Key : Privacy - Photo Library Usage Description Value : YES Key : Privacy - Camara Usage Description Value : YES
这里的值是字符串而非布尔值.
试试吧.
查看Apple documentation了解更多详情!
参考:this so post
ios – Swift 3:在不使用UIImagePickerController的情况下从照片/相机胶卷加载照片
我已经完成了我的研究并观看了许多关于使用UIImagePickerController将照片/相机卷中的图像加载到应用程序中的Youtube视频,但我想在没有用户操作的情况下访问这些照片.
我想从相机胶卷中读取一系列照片并将它们放在照片幻灯片中,逐一显示.如何在没有UIImagePickerController的情况下访问这些照片?
解决方法
这是Swift 3代码的版本.
导入照片框架
import Photos //Array of PHAsset type for storing photos var images = [PHAsset]()
使用此功能可以在viewDidLoad中的某个位置或在您想要获取照片的任何位置获取照片.
func getimages() { let assets = PHAsset.fetchAssets(with: PHAssetMediaType.image,options: nil) assets.enumerateObjects({ (object,count,stop) in // self.cameraAssets.add(object) self.images.append(object) }) //In order to get latest image first,we just reverse the array self.images.reverse() // To show photos,I have taken a UICollectionView self.photosCollectionView.reloadData() }
其余是UICollectionView数据源和代理.请参阅如何显示图像的cellForItem数据源方法.
func collectionView(_ collectionView: UICollectionView,numberOfItemsInSection section: Int) -> Int { return images.count } func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCollectionViewCell",for: indexPath) as! PhotoCollectionViewCell let asset = images[indexPath.row] let manager = PHImageManager.default() if cell.tag != 0 { manager.cancelImageRequest(PHImageRequestID(cell.tag)) } cell.tag = Int(manager.requestimage(for: asset,targetSize: CGSize(width: 120.0,height: 120.0),contentMode: .aspectFill,options: nil) { (result,_) in cell.photoImageView?.image = result }) return cell }
根据您的需要调整以下代表.
func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeforItemAt indexPath: IndexPath) -> CGSize { let width = self.view.frame.width * 0.32 let height = self.view.frame.height * 0.179910045 return CGSize(width: width,height: height) } func collectionView(_ collectionView: UICollectionView,minimumLinespacingForSectionAt section: Int) -> CGFloat { return 2.5 } func collectionView(_ collectionView: UICollectionView,insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsets(top: 5,left: 5,bottom: 5,right: 5) } func collectionView(_ collectionView: UICollectionView,minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 0 }
务必保持照片权限.如果单击“不允许”,则必须使用PHPhotoLibrary.authorizationStatus()管理授权.
您可以阅读有关Photos框架的更多信息.
关于Swift 4.2 imagePickerController问题和swiftui image的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AGImagePickerController、iOS swift中UIImagePickerControllerDelegate代理不执行问题、ios – Swift 3中的UIImagePickerController、ios – Swift 3:在不使用UIImagePickerController的情况下从照片/相机胶卷加载照片等相关内容,可以在本站寻找。
本文标签: