0

我有一个 UIImage,它位于 UIScrollView 内,因此我可以放大和缩小、裁剪、移动等。

如何获取 UIScrollView 内 UIImage 可见部分的坐标。我想以原始分辨率裁剪图像(使用 GPUIImage),但我需要矩形的 x、y、宽度和高度。

4

1 回答 1

1

我使用滚动视图来启用 UIImage 的缩放。裁剪按钮呈现一个覆盖的可调整大小的裁剪视图。以下是我用来确保 UIScrollView 中用户定义的裁剪框与正确的坐标一起添加到 UIImageView 的代码(然后可以用来裁剪图像)。

要找到 x 和 y 坐标,请使用滚动视图 contentOffset 乘以缩放比例的倒数:

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];
于 2013-09-02T18:28:24.263 回答