美文网首页iOS开发OC-开发案例收集
UIImageView和UIImage的处理

UIImageView和UIImage的处理

作者: 追逐_chase | 来源:发表于2019-04-08 14:26 被阅读0次
timg.gif

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;
}


相关文章

网友评论

    本文标题:UIImageView和UIImage的处理

    本文链接:https://www.haomeiwen.com/subject/fhvlvqtx.html