iOS 图片资源放在 Images.xcassets 和单独文件夹的区别,通过 imageNamed 和imageWithContentsOfFile 加载的区别
一、iOS 图片资源放在 Images.xcassets 和单独文件夹的区别
-
Images.xcassets
(1)图片的资源包放到 Images.xcassets 中,会把所有的文件打包 Assets.car文件,图片会被压缩,从而使包的体积变小。
(2)只支持png格式的图片
(3)图片只支持 [UIImage imageNamed:@"logo01"] 的方式实例化
imageView.image = [UIImage imageNamed:@"logo01"];
-
单独文件夹
(1)图片的资源包放到文件夹中,会被打包 MainBundle 中。图片不会被压缩。
(2)可以使用 [UIImage imageNamed:@"logo01"] 加载,也可以使用i mageWithContentOfFile: 方法加载。
// imageView.image = [UIImage imageNamed:@"logo01"]; NSString *path = [[NSBundle mainBundle] pathForResource:@"logo01.png" ofType:nil]; imageView.image = [UIImage imageWithContentsOfFile:path];
二、通过 imageNamed 和imageWithContentsOfFile 加载图片的区别
-
imageNamed
(1)加载到内存当中会一直存在内存当中,(图片)不会随着对象的销毁而销毁。
(2)相同的图片是不会重复加载内存中
(3)加载到内存中占据的内存较大
-
imageWithContentsOfFile
(1)加载的图片会随着对象的销毁而销毁
(2)相同的图片是会重复加载到内存中
(3)加载到内存中占据的内存较大
三、总结
放在 Images.xcassets 里边的图片打包时,会被压缩成.car文件,APP的体积变小。但是不能通过路径方式加载图片,只能使用 [UIIimage imageName:]
而imageName:这个方法加载图片,会在内存中一直存在,什么时候销毁不受管理员控制,因此适用于加载频繁的小图片
而放在文件夹的图片,可以使用imageWithContentOfFile:方法加载,该方法的好处是内存随着对象的销毁而销毁,因此适用于大图片、频率低的图片
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了