我有一个UIImageView
640x1136 的图像。我希望用户能够在裁剪区域(也是 640x1136)内缩放和转换图像,然后将新裁剪的图像重新保存为 640x1136(捏/拉/滑动),所以我将它卡在 aUIScrollView
中并将它们都缩小到大约 100x178 并增加了滚动功能-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
一切正常!我可以移动图像,缩小和缩放它,它在子视图的边缘被“剪裁”了!所以现在我被困在试图弄清楚如何以最大分辨率截取它的屏幕截图?我可以截图CGContext
并显示正确的“裁剪”图像部分,但分辨率为 100x178,所以我将整个画面缩放到 640x1136,然后截图,但问题是滚动视图中的内容无法缩放跟上它,所以现在庄稼全乱了!有什么好的解决方案吗?
这是我尝试过的代码;它没有用:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 1136), YES, 0.0);
UIImageView *theImageToCrop = [[UIImageView alloc] initWithFrame:CGRectMake(0-(theScrollView.contentOffset.x*(640/theScrollView.frame.size.width)), 0-(theScrollView.contentOffset.y*(1136/theScrollView.frame.size.height)), theScrollView.contentSize.width*(640/theScrollView.frame.size.width), theScrollView.contentSize.height*(1136/theScrollView.frame.size.height))];
theImageToCrop.contentMode = UIViewContentModeScaleAspectFill;
theImageToCrop.image = originalImageView.image;
CGContextRef context = UIGraphicsGetCurrentContext();
[theImageToCrop.layer renderInContext:context];
croppedImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我已经可以看出问题是当我截取最终屏幕截图时图像没有被翻译。它正在缩放到在 中缩放到的正确大小,UIImageView
但未设置内容偏移量。我将它设置在我创建的框架中,CGRectMake
但我有一种感觉,当我使用此代码时:[theImageToCrop.layer renderInContext:context];
尺寸保持不变,但原点重置为(0,0)
. 我怎样才能保持大小和原产地?