我已使用此引用实现了自动布局的自定义单元格:https://github.com/smileyborg/TableViewCellWithAutoLayoutiOS8
在我的手机中,我有一个带有动态内容的imageView和5个标签。
我想要实现的就是来自Facebook的Feed,其中每个单元格的图像大小都不同。我有图像大小的元数据。
我尝试使用estimatedHeightForRow并给出一些平均高度。
布局中一切正常,但滚动时会跳转。
如何改善我的tableview滚动性能?
答案 0 :(得分:1)
您已在部分评论中发布此代码:
let block: SDWebImageCompletionBlock! = {
(image: UIImage!, error: NSError!, cacheType: SDImageCacheType, imageURL: NSURL!) -> Void in
self.ImageFeedView.sd_setImageWithURL(self.cueData.attachments[0].URL);
}
self.ImageFeedView.sd_setImageWithURL(self.cueData.attachments[0].URL, completed:block)
您正在设置图像两次。首先:
self.ImageFeedView.sd_setImageWithURL(self.cueData.attachments[0].URL, completed: block)
然后再次,完成块中的相同图像。这是不必要的,可能导致口吃。只需删除块并执行此操作:
self.ImageFeedView.sd_setImageWithURL(self.cueData.attachments[0].URL)
口吃现在应该更好。 (甚至解决,请尝试)
答案 1 :(得分:1)
上传大图时,表格有时会抽搐。也许尝试解码收到的照片:
UIImage *anImage = ... // Assume this exists.
CGImageRef originalImage = (CGImageRef)anImage;
assert(originalImage != NULL);
CFDataRef imageData = CGDataProviderCopyData(CGImageGetDataProvider(originalImage));
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithCFData(imageData);
if (imageData != NULL) {
CFRelease(imageData);
}
CGImageRef image = CGImageCreate(CGImageGetWidth(originalImage),
CGImageGetHeight(originalImage),
CGImageGetBitsPerComponent(originalImage),
CGImageGetBitsPerPixel(originalImage),
CGImageGetBytesPerRow(originalImage),
CGImageGetColorSpace(originalImage),
CGImageGetBitmapInfo(originalImage),
imageDataProvider,
CGImageGetDecode(originalImage),
CGImageGetShouldInterpolate(originalImage),
CGImageGetRenderingIntent(originalImage));
if (imageDataProvider != NULL) {
CGDataProviderRelease(imageDataProvider);
}
// Do something with the image.
CGImageRelease(image);
从CGImageCreate()接收的图像已经被解码,这正是我们所需要的。剩下的就是将这段代码包装在NSOperation中以在后台执行它,最后将结果发送到主线程。使用+ [UIImage imageWithCGImage:]我们从生成的CGImage中获取UIImage,并在滚动期间将其分配给所需的UIImageView。动画完美无缺。