ios - 我应该在渲染到屏幕之前调整 UIImage 的大小吗?

标签 ios uiimageview uiimage render

在开发 ios 应用程序时,假设我有大尺寸的 UIImage

let image = UIImage(named: "unicorn")! // actual image size is 2000x2000

我应该在渲染到屏幕之前调整大小

let size = CGSize(width: 100.0, height: 100.0)
// use AlamorefireImage UIImage extension to resize UIImage
let scaledImage = image.af_imageScaled(to: size)
// render
imageView.image = scaledImage

或者我直接渲染图像到屏幕

imageView.frame.size = CGRect(width: 100, height: 100)
imageView.image =image

哪个绘图性能更好?

最佳答案

让我们考虑以下情况:

  1. 如果您使用的是 bundle 中的图像(项目文件夹)。 最好的方法是使用 Assets 目录。在这种情况下,您必须以所需的确切尺寸存储图像,例如。 100x100 pt(特定屏幕尺寸的特定图像,例如,1x 为 100x100,2x 为 200x200,3x 为 300x300)。这是性能的最佳选择。

  2. 如果您从网络下载图像。我认为最好的方法是在服务器上有一个缩略图和大图像。例如。列表中小用户照片尺寸为 100x100 像素的缩略图,用户个人资料页面上大用户照片尺寸为 500x500 像素的缩略图。

  3. 在某些情况下,您仅从网络下载大尺寸的图像,例如。 2000x2000。在这种情况下,您可以像您建议的那样在渲染之前调整图像大小。但是不要在主线程上这样做以防止应用程序卡住。如果此图像将在应用程序中多次使用(例如,在 TableView 单元格中),您甚至可以将此重新缩放的图像保存到缓存中,并在下次从缓存中使用它。

关于ios - 我应该在渲染到屏幕之前调整 UIImage 的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752018/

相关文章:

objective-c - 使用 UIImageWriteToSavedPhotosAlbum 保存图像时的文件名是什么

ios - 如何在 iOS 中识别表格行?

ios - 类型 'String' 的值没有成员 'stringByAppendingPathComponent'

ios - 使用数组将多个参数传递给函数

ios - 将 UIImage 设置为 UIImageView 以节省内存时是否需要调整 UIImage 的大小?

iphone - 从 NSData 获取质量较低的 UIImage?

ios - 颠倒呈现 UIActivityViewController

ios - 如何设置自动布局约束,使 UIImageView 的高度等于父 View 的高度?

ios - 响应按钮事件更新图像

xcode - 如何快速更改按钮图像?