UIImageView
资源管理
1-图片放到supporting Files注意事项
注意: 如果放到images.xcassets中,默认就是拷贝源文件过来
不勾选copy,项目文件夹中是没有的,仅仅是引用,建议勾选。
2-Add to targets
要不要把图片打包到软件安装包中去
3-Added folder
如果勾选Create groups,会创建一个虚拟的文件夹
如果勾选Create folder references,真的创建一个文件夹(文件夹颜色不一样),在安装包中会有这个文件夹。
属性:
contentMode属性:
UIViewContentModeScaleToFill
-将图片拉伸填充整个imageView
-图片显示的尺寸跟imageView的尺寸是一样的
UIViewContentModeScaleAspectFit
- 保证刚好能看到图片的全部
- 拉伸至图片的宽度或者高度跟imageView一样
简单来说:UIViewContentModeScaleToFill属性会让图片显示整个ImageView,可以修改宽高比。
UIViewContentModeScaleAspectFit属性会锁定纵横比,让图片显示整个区域。
其他的属性中带有scale的,图片不会拉伸,保持原先的宽高。
clipsToBounds属性:
// 裁剪超出imageView边框的部分
imageView.clipsToBounds = YES;
添加图片时:
用initWithImage默认尺寸就是图片的尺寸,位置默认从(0,0)开始
用init默认的尺寸是(0,0),所以必须要设置图片的尺寸才能够显示图片
添加尺寸注意点:
错误代码:imageView.frame.size.width = imageView.image.size.width
在OC语法中,不能直接修改结构体属性中的成员
修改方法(同样适用于bounds/center):
CGRect tempFrame = imageView.frame; // frame是一个新定义的变量
tempFrame = imageView.image.size;
imageView.frame = tempFrame; // 如果少了这一句(不是对象,是结构体)
加载无缓存的图片:
优点:如果资源是经常用的,干脆放在内存中,不需要耗时的读写操作
缺点:缓存是会越积越多的,占用内存越来越大
在images.xcassets中:
放在images.xcassets中的图片,只能通过文件名访问,没有全路径
大批量的图片不要放在images.xcassets中,默认就带有缓存
- 有缓存
UIImage *image =[UIImage imageNamed:@"图片名"];
使用场合:图片比较小、使用频率比较高
建议:把需要缓存的图片放到Images.xcassets
- 没有缓存
NSString *file = [[NSBundle mainBundle] pathForResource:@"图片名" ofType:@"图片扩展名"];
UIImage *image = [UIImage imageWithContentOfFile:file];
使用场合:图片比较大,使用频率比较低,类似于懒加载
建议:不需要缓存的图片不能放在Images.xcassets中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战