UIImageView的创建方式
图片的加载方式
- (instancetype)initWithImage:(nullable UIImage *)image
- 通过资源路径的方式
[[NSBundle mainBundle] pathForResource:@"资源名称" ofType:@"类型"]
+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;
UIImageView的 contentMode(内容模式)属性
- 这个属性是UIView的,UIImageView继承,是一个枚举值,默认
UIViewContentModeScaleToFill
按比例填充 一般frame过大的话,会变形
下面的3个属性是拉伸和压缩图片的比例
按比例缩放填充 有可能会失真
UIViewContentModeScaleToFill,
按比例缩放,根据宽高适应,不会失真
UIViewContentModeScaleAspectFit,
按比例缩放填充,宽和高只要一个因素fill适应,其他的就在考虑
可能只显示一部分
UIViewContentModeScaleAspectFill,
重新绘制 图片
UIViewContentModeRedraw,
下面的属性 不会被拉伸
UIViewContentModeCenter, 居中显示
UIViewContentModeTop, 靠上显示
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight
-
UIViewContentModeScaleToFill 模式
- 图片的内容
frame
被完全填充,按照比例缩放,可能会图片变形
image.png
- 图片的内容
-
UIViewContentModeScaleAspectFit 模式
- 图片完全显示,不会引起图片变形,按照比例缩放,在缩放的过程中,如果宽或者高度,有一个因素达到
frame
的边缘,就会按照其适应填充,途中蓝色
是UIImageView
的frame的大小
image.png
- 图片完全显示,不会引起图片变形,按照比例缩放,在缩放的过程中,如果宽或者高度,有一个因素达到
-
UIViewContentModeScaleAspectFill 模式
image.png
UIImageView的帧动画
- 加载图片
- 设置动画属性
- 执行动画
//这个数组容器,只能存放 UIImage对象
NSMutableArray <UIImage *> *imagesArray = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
NSString *imageName = [NSString stringWithFormat:@"xxxx_%d", i + 1];
UIImage *image = [UIImage imageNamed:imageName];
[imagesArray addObject:image];
}
//设置动画数组资源
self.imageView.animationImages = imagesArray;
//设置播放次数 无线播放
self.imageView.animationRepeatCount = 0;
//设置延迟的时间
self.imageView.animationDuration = 1;
// 开始动画
[self.imageView startAnimating];
//停止动画
//[self.imageView stopAnimating];
注意:上面说到UIImageView的加载图片方式的时候有2种
- 1.imageWithName:
- 这种方式在加载图片时,就算指向它的指针被销毁,该资源也
不会
被从内存
干掉 - 放到
Assets.xcassets
里面的资源文件,默认就有缓存的 - 图片经常使用的,可以使用这个加载方式
- 这种方式在加载图片时,就算指向它的指针被销毁,该资源也
- 2.imageWithContentOfFile:
- 指向它的指针被销毁,该资源就会被从内存中干掉
UIImage
创建方式
//直接加载图片
UIImage *image = [UIImage imageNamed:@""];
//加载二进制数据
UIImage *imageDa = [UIImage imageWithData:@"二进制"];
//加载二进制数据 并有缩放
UIImage *imageData = [UIImage imageWithData:@"二进制" scale:@"缩放小数"];
//通过路径加载
UIImage *image = [UIImage imageWithContentsOfFile:@"文件路径"];
图片的压缩的2种方式
1.系统提供的压缩方式
UIImage *image = [UIImage imageWithContentsOfFile:@"xx.pne"];
//png压缩
NSData *pngData = UIImagePNGRepresentation(image);
//jpg压缩,有压缩系数 常用
NSData *jpgData = UIImageJPEGRepresentation(image, 1);
2.上下文压缩图片
- (UIImage *)scaleImageWithImage:(UIImage *)image withScale:(CGFloat)scale{
//创建上下文
CGSize imageSize = CGSizeMake(image.size.width *scale, image.size.height * scale);
UIGraphicsBeginImageContext(imageSize);
//重新w绘制
[image drawInRect:CGRectMake(0, 0, image.size.width *scale, image.size.height *scale)];
//获取到绘制的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//结束上下文
UIGraphicsEndImageContext();
return newImage;
}
网友评论