资源管理
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中