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

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慢慢了解运用吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值