У меня есть UICollectionView, используемый для отображения изображений, которые я загружаю из файловой системы. Однако прокрутка, по-видимому, очень плохая, при прокрутке вверх и вниз она немного шаткая и негладкой, как должна - по сравнению с приложением для фотографий от Apple.Плохая производительность при прокрутке UICollectionView
Подробно: Пользователь может выбрать или сфотографировать камеру, которая затем будет сохранена в файловой системе в полном разрешении. Затем URL-адрес файла сохраняется в базе данных данных ядра.
Выполняя сегу, я попадаю на страницу обзора, где у меня есть вид коллекции. Здесь я загружаю изображение через NSURL, сохраненный в базе данных, при загрузке меняю размер изображения - от 900 кб до 45 кб. Это прекрасно работает, поэтому изображение в виде коллекции меньше 50 кб, что, на мой взгляд, не слишком много, не так ли?
Вот код:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let width = 90
let height = 90
let theSize = CGSize(width: width, height: height)
return theSize
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let myImageCell:ImageCell = myCollectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as ImageCell
var baseString:String = documentsDirectory()
var pathComponents = [baseString, self.pictures[indexPath.row]]
var theImageFile = NSURL.fileURLWithPathComponents(pathComponents)
let theNewImage = self.scaleNewImage(theImageFile)// self.scaleNewImage(readImageFileFromDirectoryNSURL(self.pictures[0]))
myImageCell.imageCell.image = theNewImage
return myImageCell
}
// Здесь код, чтобы изменить размер изображения
func scaleNewImage (url:NSURL) -> UIImage {
let src = CGImageSourceCreateWithURL(url, nil)
let scale = UIScreen.mainScreen().scale
let value = (90) * scale // self.view.bounds.width/2
let parameters = [
kCGImageSourceShouldAllowFloat as String : true,
kCGImageSourceCreateThumbnailWithTransform as String : true,
kCGImageSourceCreateThumbnailFromImageAlways as String : true,
kCGImageSourceThumbnailMaxPixelSize as String : value
]
let imageRef = CGImageSourceCreateThumbnailAtIndex(src, 0, parameters)
let image = UIImage(CGImage: imageRef, scale: scale, orientation: .Up)!
//println(image)
//println(image.size)
return image
}
Было бы здорово, если бы кто-то может помочь, спасибо заранее
Вы изучали кеширование изображений? – Wain
Нет, я бы этого не сделал, это поможет? Я совершенно новый для быстрой/iOS, как это можно достичь? Любые примеры? - Не нужно решение, просто направление, спасибо –
Направления должны быть в Google или в поле поиска вверху страницы :-) – Wain