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中

 

posted @ 2020-04-06 21:23  千面客  阅读(192)  评论(0编辑  收藏  举报