我已经完成了我的研究并观看了许多关于使用UIImagePickerController将照片/相机卷中的图像加载到应用程序中的Youtube视频,但我想在没有用户 *** 作的情况下访问这些照片.
我想从相机胶卷中读取一系列照片并将它们放在照片幻灯片中,逐一显示.如何在没有UIImagePickerController的情况下访问这些照片?
解决方法 您可以使用Photos框架从CameraRoll / Photos中获取照片.这是Swift 3代码的版本.
导入照片框架
import Photos//Array of PHAsset type for storing photosvar 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框架的更多信息.
总结以上是内存溢出为你收集整理的ios – Swift 3:在不使用UIImagePickerController的情况下从照片/相机胶卷加载照片全部内容,希望文章能够帮你解决ios – Swift 3:在不使用UIImagePickerController的情况下从照片/相机胶卷加载照片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)