我在UIScrollView中有一个UIImage,所以我可以放大和缩小,裁剪,移动等等。
如何在UIScrollView中获取UIImage的可见部分的坐标。 我想用它的原始分辨率(使用GPUIImage)裁剪图像,但我需要x,y,宽度和高度为矩形。
答案 0 :(得分:1)
我使用scrollview来启用UIImage的缩放。裁剪按钮呈现重叠的可调整大小的裁剪视图。以下是我用来确保UIScrollView中用户定义的裁剪框被添加到UIImageView的正确坐标(然后可用于裁剪图像)的代码。
要查找x和y坐标,请使用scrollview contentOffset乘以zoomscale的倒数:
float origX = 0;
float origY = 0;
float widthCropper = 0;
float heightCropper = 0;
if (_scrollView.contentOffset.x > 0){
origX = (_scrollView.contentOffset.x) * (1/_scrollView.zoomScale);
}
if (_scrollView.contentOffset.y > 0){
origY = (_scrollView.contentOffset.y) * (1/_scrollView.zoomScale);
}
如果您需要为滚动视图中显示的内容创建尺寸合适的裁剪框,则需要调整任何缩放系数的宽度和高度:
widthCropper = (_scrollView.frame.size.width * (1/_scrollView.zoomScale));
heightCropper = (_scrollView.frame.size.height * (1/_scrollView.zoomScale));
并将此正确大小的矩形作为裁剪视图添加到UIImageView:
CGRect cropRect = CGRectMake((origX + (SIDE_MARGIN/2)), (origY + (SIDE_MARGIN / 2)), (widthCropper - SIDE_MARGIN), (heightCropper - SIDE_MARGIN));
_cropView = [[UIView alloc]initWithFrame:cropRect];
[_cropView setBackgroundColor:[UIColor grayColor]];
[_cropView setAlpha:0.7];
[_imageView addSubview:_cropView];
[_imageView setCropView:_cropView];