我有UIImageView *userImage
和UIImageView *imageSquare
,其大小为320x320。用户可以使用userImage
来改变尺寸&改变立场。 imageSquare
是静态的,位于屏幕中间,应该被视为裁剪视图
下面的代码可以将userImage裁剪为imageSquare
原始尺寸,但不会裁剪新的宽高比/比例。
我一直在疯狂尝试这样做,但我找不到办法。如何裁剪userImage
的当前视图(用户正在操作的视图)?
CGSize pageSize = imageSquare.frame.size;
UIGraphicsBeginImageContext(pageSize);
CGContextRef resizedContext = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(resizedContext, -imageSquare.frame.origin.x, -imageSquare.frame.origin.y);
[userImage.layer renderInContext:resizedContext];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (image != nil) {
NSLog(@"is not nil");
NSData *imgData = UIImagePNGRepresentation(image);
imageSquare.image = [[UIImage alloc]initWithData:imgData];
}
答案 0 :(得分:0)
您的320x320裁剪视图应该是一个UIView,其clipsToBounds(Interface Builder中的“剪辑子视图”)设置为YES,然后userImage应该是其子视图之一。
当用户更改大小/位置时,您将更改userImage.frame,并将为您处理裁剪。