我们是不是应该在将图像设置为 UITableView 中的 imageView 之前缩放图像
Posted
技术标签:
【中文标题】我们是不是应该在将图像设置为 UITableView 中的 imageView 之前缩放图像【英文标题】:Should we scale image before setting it to a imageView in UITableView我们是否应该在将图像设置为 UITableView 中的 imageView 之前缩放图像 【发布时间】:2016-03-07 06:34:07 【问题描述】:我正在显示带有名称的图像列表,带有 V 形配件以查看所选图像的完整尺寸版本。
我看到滚动性能不是超级流畅。我认为原因是我分配给每个单元格的 imageView 的图像是全尺寸图像(在显示之前会自动缩小)。
如果我保持较小的“缩略图”大小的图像,性能会提高吗?如果是,最好的方法是什么?我在How to resize images in UITableViewCell? 中看到了一些示例。使用以下方法的答案(转载如下)是否足够好?
另外,还有其他使滚动更流畅的技巧吗?
CGSize itemSize = CGSizeMake(30, 30);
UIGraphicsBeginImageContext(itemSize);
CGRect imageRect = CGRectMake(30.0, 30.0, itemSize.width, itemSize.height);
[thumbnail drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
【问题讨论】:
【参考方案1】:是的,缩小图像有很大帮助。我创建了下面的方法来调整跟随的大小(并在后台线程上调用它以保持主 UI 线程嗡嗡声)
我还发现,仅在更改的行上调用 reloadData 有助于使用
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
用于缩小尺寸的方法。
- (UIImage *) returnThumbnail:(UIImage*)image
CGSize itemSize = CGSizeMake(120, 90);
UIGraphicsBeginImageContext(itemSize);
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
[image drawInRect:imageRect];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"Returning scaled image %@",scaledImage) ;
return scaledImage ;
【讨论】:
以上是关于我们是不是应该在将图像设置为 UITableView 中的 imageView 之前缩放图像的主要内容,如果未能解决你的问题,请参考以下文章
在将数据库引擎升级到 PostgreSQL 12 时,是不是也应该为“pg”gem 更新 Gemfile?它们有啥关系?
SQL Server 在将值转换为字符串/从字符串转换时是不是考虑文化/区域设置?
在将图像分配给 img 标签之前使用 javascript 调整图像大小