我有一个 UIImage,它位于 UIScrollView 内,因此我可以放大和缩小、裁剪、移动等。
如何获取 UIScrollView 内 UIImage 可见部分的坐标。我想以原始分辨率裁剪图像(使用 GPUIImage),但我需要矩形的 x、y、宽度和高度。
我有一个 UIImage,它位于 UIScrollView 内,因此我可以放大和缩小、裁剪、移动等。
如何获取 UIScrollView 内 UIImage 可见部分的坐标。我想以原始分辨率裁剪图像(使用 GPUIImage),但我需要矩形的 x、y、宽度和高度。
我使用滚动视图来启用 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];