方法一:
#define START_X xxx
#define START_Y xxx#define WIDTH xxx
#define HEIGHT xxx
//传入原始图片对象
-(UIImage *)getImageFromImage:(UIImage*) superImage
{
CGSize subImageSize = CGSizeMake(WIDTH, HEIGHT);
//定义裁剪的区域相对于原图片的位置
CGRect subImageRect = CGRectMake(START_X, START_Y, WIDTH, HEIGHT);
CGImageRef imageRef = superImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, subImageRect);
UIGraphicsBeginImageContext(subImageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, subImageRect, subImageRef);
UIImage* subImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
//返回裁剪的部分图像
return subImage;
}
------------------------------------------------------------
方法二:
- (void)drawRect:(CGRect)rect {
CGContextRef context=UIGraphicsGetCurrentContext();
//设置倒立
CGContextRotateCTM(context,M_PI);
//重新设置坐标 self.bounds获取整个屏幕的区域。
CGContextTranslateCTM(context, -self.bounds.size.width,-self.bounds.size.height);
//CGContextScaleCTM(context, 1.0, -1.0);
CGRect imageRect=recti;
//画底图
CGContextDrawImage(context, imageRect, image);
//填充颜色
CGContextSetRGBStrokeColor(context,0.0,0.0,0.0,1.0);
CGContextFillRect(context,self.bounds);
CGRect ret=CGRectMake(0.0, 0.0, 180, 180);
//裁剪
CGContextClipToRect(context, ret);
//获取裁剪区域
CGRect boudsc=CGContextGetClipBoundingBox(context);
int cleft = boudsc.origin.x;
int ctop = boudsc.origin.y;
int cwidth = boudsc.size.width;
int cheight = boudsc.size.height;
//画出裁剪区域
CGContextDrawImage(context, self.bounds, image);
}
-------------------------------------------------------------
方法三:
UIImage *image=[UIImage imageNamed:@"**.png"];
创建矩形
根据矩形创建image
uiimageview.image=[UIimage imagewidthCGImage:CGImageCreateWidthImageInRect:([image CGImage],矩形)];
将image添加到imageview中
显示view