ios – Swift 3:在不使用UIImagePickerController的情况下从照
发布时间:2020-12-14 19:34:51 所属栏目:百科 来源:网络整理
导读:This question has been asked before但没有Swift 3的答案.我正在寻找过去3周我遇到的相同解决方案. 我已经完成了我的研究并观看了许多关于使用UIImagePickerController将照片/相机卷中的图像加载到应用程序中的Youtube视频,但我想在没有用户操作的情况下访
This question has been asked before但没有Swift 3的答案.我正在寻找过去3周我遇到的相同解决方案.
我已经完成了我的研究并观看了许多关于使用UIImagePickerController将照片/相机卷中的图像加载到应用程序中的Youtube视频,但我想在没有用户操作的情况下访问这些照片. 我想从相机胶卷中读取一系列照片并将它们放在照片幻灯片中,逐一显示.如何在没有UIImagePickerController的情况下访问这些照片? 解决方法
您可以使用Photos框架从CameraRoll / Photos中获取照片.
这是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框架的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容