Ich entwickle eine iOS-Anwendung, die Beiträge von einem Server in eine UICollectionView lädt. Die Auflistungsansichtszelle enthält eine UIImageView, die am unteren Rand der Zelle fixiert ist.Sammlung Ansicht Zellen laden Bilder nicht korrekt
Jedes Mal, wenn ich die Anwendung und die Sammlung Ansicht Lasten starten, werden alle Bilder laden nicht korrekt, aber für das letzte Bild, das die richtigen Dimensionen ist. Alle Zellen werden auf die gleiche Weise formatiert.
ich bisher gearbeitet hat, eine Vielzahl von Lösungen, aber nichts versucht.
Was ich vermute, ist, dass die Bilder nicht fertig geladen sind, bevor sie auf die UIImageView jeder Zelle (mit Ausnahme der letzten in diesem Fall) gesetzt werden. Dies scheint nicht möglich, obwohl die Zellen nach dem Aufstehen eine erfolgreiche Antwort neu geladen werden ..
Dies ist mein Code für diese bestimmte Funktion (mit Alamofire)
func getAllPosts(){
let url = "\(Constants.baseURL)/posts/"
let parameters = ["user_id": "\(userProfile!.getId())"]
Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON)
.validate(contentType: ["application/json"])
.responseString { response in
switch response.result {
case .Success:
var postsArray = Array<[String: AnyObject]>()
do {
let json = try NSJSONSerialization.JSONObjectWithData(response.data!, options: NSJSONReadingOptions.MutableContainers)
for post in json as! [AnyObject] {
postsArray.append(post as! [String: AnyObject])
}
//invert array of posts so that latest load first!
postsArray = postsArray.reverse()
} catch {
}
//convert json to Post objects and reload the view
self.initialisePosts(postsArray)
self.collectionView?.reloadData()
case .Failure(let error):
print(error)
}
}
}
Alle Hilfe ist willkommen.
Edit: Im Folgenden sind die aktuellen Einschränkungen für die UIImageView
Edit 2: Hier ist der Code, die Zellen für die Formatierung
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// get a reference to our postcell with no image
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifiers[0], forIndexPath: indexPath) as! PostCell
guard let _: Post? = posts[indexPath.row] else {
return cell
}
return configurePostCell(cell, post: posts[indexPath.row])!
}
func configurePostCell(cell: UICollectionViewCell, post: Post) -> PostCell?{
if let cell = cell as? PostCell {
cell.author.text = post.user_name
cell.date.text = formatter.stringFromDate(post.pub_date!)
cell.desc.text = post.desc
cell.layer.cornerRadius = 5 //set corner radius here
cell.advertImage.image = post.advert?.advert_image
return cell
}
return nil
}
Update: Mit @ Michaels Beratung Ich habe festgestellt, dass die Zelle Bilder laden korrekt sind.
aber, dass die Zellenhöhe auf mysteriöse Weise abgeschnitten .. Größe
Storyboard Editor Zelle 50 Pixel wird
Zellengröße zur Laufzeit
Das scheint das Problem zu sein, aber ich habe noch keine Lösung gefunden.
Update: Nach zwei Stunden auf der Bounty habe ich mich entschieden, es @ @ Michael zu vergeben, weil seine Antwort mir zu weiteren Untersuchungen meiner Frage, die noch immer läuft, geholfen hat.
Wo Ihr Code für Bilder Sammlung Ansicht Einstellung? Haben Sie für UIImageView eine Höhenbeschränkung angegeben? –
oh ja tut mir leid, ich werde die Frage jetzt bearbeiten, um diese Informationen aufzunehmen. – Danoram
tun Sie es in der main_queue –