iOS UIImageView显示图片 以及 图片裁剪

来源:互联网 发布:dcn oracle python 编辑:程序博客网 时间:2024/06/07 02:59

iOS加载网络图片

sd加载网络图片,在得到图片的回调中,进行图片的裁剪。但是需要注意得到裁剪的图片后,要注意释放,否则内存会爆掉(特别是需要处理过多裁剪的图片时)

[imageView sd_setImageWithURL:[NSURL URLWithString:[ymData.showImageArray objectAtIndex:i]] placeholderImage:[UIImage imageNamed:@"default_img.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {                if (image != nil) {                    if (image.size.height>image.size.width) {//图片的高要大于与宽                        CGRect rect = CGRectMake(0, image.size.height/2-image.size.width/2, image.size.width, image.size.width);//创建矩形框                        CGImageRef cgimg = CGImageCreateWithImageInRect([image CGImage], rect);                        imageView.image=[UIImage imageWithCGImage:cgimg];                        CGImageRelease(cgimg);                    }else{                        CGRect rect = CGRectMake(image.size.width/2-image.size.height/2, 0, image.size.height, image.size.height);//创建矩形框                        CGImageRef cgimg = CGImageCreateWithImageInRect([image CGImage], rect);                        imageView.image=[UIImage imageWithCGImage:cgimg];                        CGImageRelease(cgimg);                    }                }            }];

UIImageView显示图片

通常我们得到的图片要显示在UIImageView里。但是图片的尺寸比例跟UIImageView的比例尺寸还不一样,这时。惯性思维就是要对图片就行处理裁剪啊什么的,得到跟UIImageView比例一样的图片,这样才不会失真。其实,不用对图片做任何处理,UIImageView的属性早已搞定了一切。

imageView.contentMode = UIViewContentModeScaleAspectFill imageView.clipsToBounds = YES

UIViewContentModeScaleAspectFill会保证图片比例不变,但是是填充整个ImageView的,只有部分图片显示出来(而且需要设置clipsToBounds为YES,把多余的部分裁掉)。ImageView显示图片保证图片不失真,看起来不像压缩过的图片的方法只需设置这两个属性即可,就其他的属性自己查看SDK慢慢了解运用吧。

1 0