Ich habe tableViews
, die jeden Zeilenordner (Album Image) enthält, die ich Bilder in das Dokument-Verzeichnis speichern, wenn ich die einzelnen Ordner ich in der benutzerdefinierten collectionView
eingeben auswählen die über alle Bilder im Dokument-Verzeichnis und zeigt es auf die Zellen mein Problem ist Collection sehr langsam ladende die Bilder in der collectionViewCells
es 5 bis 7 Sekunden in Anspruch nehmen, wenn alle Bilder im Laden collectionViewCells
Ich habe ein Problem beim Laden von Bildern auf meiner benutzerdefinierten SammlungView
folgendes unter meinem Code in viewWillAppear
:
override func viewWillAppear(animated: Bool) {
setEditing(false, animated: true)
arrayOfImagesFromDocumentDirectory = []
dictionaryOfGetImageUrl = [:]
dictionaryOfImagesForExport = [:]
arrayImageForMove = []
moveArrayImageOfUrl = []
arrayOfImageUrl2 = []
self.navigationItem.title = albumName
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
dispatch_async(dispatch_get_main_queue(), {
let fileManager2 = NSFileManager.defaultManager()
do {
let document = try fileManager2.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let getFolders = try fileManager2.contentsOfDirectoryAtURL(document, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles)
for folder in getFolders {
if folder.lastPathComponent! == albumName {
let getImages = try fileManager2.contentsOfDirectoryAtURL(folder, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles)
for img in getImages {
self.arrayOfImagesFromDocumentDirectory.append(UIImage(contentsOfFile: img.path!)!)
self.arrayOfImageUrl2.append(img.path!)
}
}
}
}catch {
print(error)
}
self.arrayOfImg = []
for img in self.arrayOfImagesFromDocumentDirectory {
let img2:UIImage = self.ResizeImage(img, targetSize: CGSize(width: 140, height: 140))
self.arrayOfImg.append(img2)
}
self.myCollectionView.reloadData()
})
}
myCollectionView.reloadData()
}
folgenden Below MyCode auf den cellForItemAtIndexPath
:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! AlbumImagesCollectionViewCell
if self.dictionaryOfSelectItem.count > 0 {
if self.dictionaryOfSelectItem[indexPath.row] == indexPath.row {
cell.imageViewCheck.image = UIImage(named: "check.png")
}else {
cell.imageViewCheck.image = nil
}
}else {
cell.imageViewCheck.image = nil
}
if self.arrayOfImageUrl2.count > 0 && self.arrayOfImagesFromDocumentDirectory.count > 0 {
if self.arrayOfImg.count > 0 {
cell.imageViewCell.image = self.arrayOfImg[indexPath.row]
cell.imageUrlLabel.text = self.arrayOfImageUrl2[indexPath.row]
}
}
return cell
}
eine Idee für mein großes Problem
Dank Vorschuss
Was ist Ihr Problem genau? –
Das Laden von Bildern aus der Dokument-Direktive in meine SammlungView ist sehr langsam und braucht viel Speicher, wie kann ich Bilder schnell in meine Sammlung holenView –
Haben Sie debugged, um zu sehen, wo es sich langsam verhält? –