Я работаю над приложением с разделом фотографии и представлением коллекции. Изображения в ячейках размыты. Они резкие, если смотреть в полноэкранном режиме и на другом экране в виде миниатюр в виде таблицы. У меня есть подкласс NSManagedObject, который называется Photo, который импортирует фотографии, ссылается на PHAssets и содержит методы, называемые getAsset() и getImage (size).Размытые изображения в UICollectionViewCell с использованием Photo Kit и Swift
Вот код для моего 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
}
Инструкция println() в getI Маг показал мне, что это получается каждый образ дважды в разных размерах, ни один из которых не является указанным размером. Сначала выбирается меньший размер для каждой ячейки, за которым следует больший размер для каждой ячейки. Я подозреваю, что меньшее изображение взорвано, чтобы заполнить мою ячейку (которая, я думаю, сделает ее размытой), и она не загружается в большем размере (что, я думаю, будет ясным). Журнал регистрации:
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 установлен в Aspect Fit в инспекторе.