Надеюсь, вы поможете мне решить эту проблему.Настольные ячейки с динамической высотой
У меня есть вид таблицы, ячейки имеют изображение, а высота ячейки зависит от изображения. Я использую SDWebImage для управления загрузкой изображений. Для того, чтобы получить изображение, я использую эту фразу в cellForRowAtIndexPath:
[cell.imageView func_crossdissolveFromURL:imageURL];
Функция func_crossdissolveFromURL является следующим:
- (void)func_crossdissolveFromURL:(NSString *)urlString {
[self.activityIndicator stopAnimating];
[self.downloadOperation cancel];
if (!urlString) {
return;
}
UIImage *memImage = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:urlString];
if (memImage) {
[self _crossdisolve:memImage cacheType:SDImageCacheTypeMemory];
return;
}
[self.activityIndicator startAnimating];
SDWebImageManager *manager = [SDWebImageManager sharedManager];
__weak UIImageView *wself = self;
id<SDWebImageOperation> operation = [manager downloadWithURL:[NSURL URLWithString:urlString]
options:SDWebImageAllowInvalidSSLCertificates
progress:nil
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) {
[self.activityIndicator stopAnimating];
if (!wself) return;
dispatch_main_sync_safe(^{
if (!wself || !image) return;
[self _crossdisolve:image cacheType:cacheType];
});
}];
self.downloadOperation = operation;
}
и функции называется _crossdissolve называется близко к концу заключается в следующем:
- (void)_crossdisolve:(UIImage *)image cacheType:(SDImageCacheType)cacheType {
CGFloat duration = (cacheType == SDImageCacheTypeMemory) ? 0 : 0.25f;
[UIView transitionWithView:self
duration:duration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.image = image;
}
completion:^(BOOL finished) {
[self setNeedsLayout];
}];
}
Итак, как я могу иметь каждую ячейку с высотой содержимого изображения? Заранее спасибо.
Это не работает для меня, если я добавляю self.tableView.rowHeight = UITableViewAutomaticDimension; и я не использую heightForRowAtIndexPath, результат тот же. Может быть, я не очень хорошо делаю шаг №2, как это сделать? –
Не уверен, что хорошо, но вам нужно убедиться, по крайней мере, высота ячейки определена однозначно, используя ваши ограничения. Вы также можете добавить ориентировочную высоту ('self.tableView.estimatedRowHeight = 87.0f;'). –
Вместо этого у меня есть функция valuHeightForRowAtIndexPath, и там я возвращаю UITableViewAutomaticDimension, но он не работает хорошо. –