我写了一个应用程序,它在集合视图中显示来自相机胶卷的所有图像。当用户点击单元格时,将显示带有所选图像的第二个视图控制器。我的问题是第二个视图控制器上的较大图像质量很差。
获取图像的代码:
var imageArray = [UIImage]()
func grabPhotos() {
let imgManager = PHImageManager.default()
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = true
requestOptions.deliveryMode = .highQualityFormat
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let fetchResult : PHFetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
if fetchResult.count > 0 {
for i in 0..<fetchResult.count {
imgManager.requestImage(for: fetchResult.object(at: i) , targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: requestOptions, resultHandler: {
image, error in
self.imageArray.append(image!)
})
}
} else {
self.collectionView?.reloadData()
}
}
这里我将图像传递给第二个视图控制器:
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
imageThatWillBePassed = imageArray[indexPath.item]
performSegue(withIdentifier: "Show Image", sender: self)
}
显示图片的代码:
class ShowImageViewController: UIViewController {
var imgToPass = UIImage()
@IBOutlet weak var imageToShow: UIImageView!
@IBOutlet weak var backBtn: UIBarButtonItem!
@IBOutlet weak var shareBtn: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.isStatusBarHidden = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
imageToShow.image = imgToPass
}
我认为问题在于我是以实际单元格的质量传递图像,但我不知道如何解决这个问题。
感谢您的帮助。