我正在使用照片部分和集合視圖的應用程序。單元格中的圖像模糊。在桌面視圖中以全屏和縮略圖形式顯示在不同的屏幕上時,它們非常銳利。我有一個名爲Photo的NSManagedObject子類,它導入照片,引用PHAssets,幷包含名爲getAsset()和getImage(size)的方法。使用照片套件和Swift在UICollectionViewCell中模糊圖像
這裏是我的UICollectionViewCell子類代碼:
class PhotoCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageForCell: UIImageView!
@IBOutlet weak var labelForCell: UILabel!
func setImage (photo: Photo?, size: CGSize) -> Bool {
if photo != nil {
if let image = photo?.getImage(size) {
var label = photo?.getLabel()
imageForCell.contentMode = UIViewContentMode.ScaleAspectFit
imageForCell.image = image
labelForCell.text = label
return true
}
}
return false
}
從cellForItemAtIndex在我UICollectionView子類:
if let photo: Photo = listOfPhotos[indexPath.item] as? Photo {
var size: CGSize = CGSizeMake(500, 350)
if !cell.setImage(photo, size: size) {
// Handles a missing photo.
}
}
2基於其創建日期從照片NSManagedObject子類中找到照片的方法:
func getAsset() -> PHAsset? {
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "creationDate = %@", photoDate)
let assets = PHAsset.fetchAssetsInAssetCollection(assetCollection, options: fetchOptions)
var asset: PHAsset?
if assets.count == 1 {
asset = assets.lastObject as? PHAsset
}
else {
// Handles invalid result
}
return asset
}
func getImage(size: CGSize) -> UIImage? {
var image: UIImage?
if let asset = getAsset() {
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: size, contentMode: PHImageContentMode.AspectFit , options: nil) { (result, info) -> Void in
image = result
println("P gI: Image gotten. Image Size: \(image?.size), Size: \(size), Date: \(asset.creationDate)")
}
}
else {
}
return image
}
getI中的println()語句法師告訴我,這是獲取每個圖像兩次不同大小,都不是指定的大小。首先獲取每個單元的較小尺寸,然後每個單元的尺寸較大。我懷疑這個較小的圖像會被炸燬以填充我的單元格(我認爲這會讓它變得模糊),並且它不會以較大的尺寸加載(我認爲這很明顯)。輸出記錄:
P gI: Image gotten. Image Size: Optional((64.0,48.0)), Size: (500.0,350.0), Date: 2014-12-04 18:56:20 +0000
P gI: Image gotten. Image Size: Optional((64.0,48.0)), Size: (500.0,350.0), Date: 2014-12-04 18:56:36 +0000
P gI: Image gotten. Image Size: Optional((2048.0,1530.0)), Size: (500.0,350.0), Date: 2014-12-04 18:56:20 +0000
P gI: Image gotten. Image Size: Optional((2048.0,1530.0)), Size: (500.0,350.0), Date: 2014-12-04 18:56:36 +0000
在我的故事板,我的ImageView和細胞兩者都爲250×175。我的ImageView設置爲看點飛度在檢查器中設置。