0
问题是何时加载应用程序的第一次,延迟连接图像加载到错误的位置时滚动集合的图像将改变几次直到滚动结束,图像将返回到正确的图像。我不知道为什么会发生这种情况。加载应用程序后,图像采取正确的位置。我使用Alamofire和Alamofire图像。UICollectionView在滚动时加载图像位置错误Alamofire
型号Noticia:
import UIKit
import SwiftyJSON
import Alamofire
import AlamofireImage
class Noticia: NSObject {
//MARK: - Properties
var name:String = ""
var image:String = ""
var number:Int = 0
let photoCache = AutoPurgingImageCache(
memoryCapacity: 100 * 1024 * 1024,
preferredMemoryUsageAfterPurge: 60 * 1024 * 1024
)
override init() {
}
func setData(obj:JSON)->Noticia{
self.name = obj["titulo"].stringValue
self.image = obj["imagen_portada"].stringValue
self.number = Int(obj["id"].stringValue)!
return self
}
//MARK: - Image Caching
func cacheImage(image: Image, urlString: String) {
photoCache.addImage(image, withIdentifier: urlString)
}
func cachedImage(urlString: String) -> Image? {
return photoCache.imageWithIdentifier(urlString)
}
}
的ViewController
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! NoticiaCell
let cell2 = collectionView.dequeueReusableCellWithReuseIdentifier("CellBillboard", forIndexPath: indexPath) as! BillboardCell
//Billboard Cell
if(indexPath.item == 0){
cell2.contact = noticia[indexPath.item]
return cell2
}else{
//Square News Cell
cell.contact = noticia[indexPath.item]
cell.layer.borderColor = ConstantProjectClass.colorBorderWebBizarro.CGColor
cell.layer.borderWidth = ConstantProjectClass.noticiasBorderWidth
//Layout custom
cell.setNeedsLayout()
cell.layoutIfNeeded()
return cell
}
}
Noticia细胞
import UIKit
import Alamofire
import AlamofireImage
class NoticiaCell: UICollectionViewCell {
//MARK: - Properties
@IBOutlet weak var labelView: UILabel!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var topLabelConstraint: NSLayoutConstraint!
@IBOutlet weak var topImageConstraint: NSLayoutConstraint!
var imageUrlString:String?
var contact:Noticia = Noticia(){
didSet{
self.labelView.text = self.contact.name
imageUrlString = self.contact.image
self.imageView.image = nil
if let imageFromCache = self.contact.cachedImage(imageUrlString!){
self.imageView.image = imageFromCache
return
}
Alamofire.request(.GET, self.contact.image)
.responseImage { response in
if let image = response.result.value {
dispatch_async(dispatch_get_main_queue(), {
let imageToCache = image
self.imageView.image = imageToCache
self.contact.cacheImage(imageToCache, urlString: self.contact.image)
})
}
}
}
}
}
任何帮助吗?
我会建议回避拖尾和底部约束在集合视图中。对具有插口的宽度约束使用前导和顶部约束。动态设置宽度并给出宽高比,或查找其他路线。 [实施例](http://stackoverflow.com/questions/38517114/collection-view-cells-have-incorrect-content-size) – Sethmr