在 UIScrollView 中获取 UIImage 可见部分的正确坐标
Posted
技术标签:
【中文标题】在 UIScrollView 中获取 UIImage 可见部分的正确坐标【英文标题】:Getting the right coordinates of the visible part of a UIImage inside of UIScrollView 【发布时间】:2013-05-13 04:56:29 【问题描述】:我有一个 UIImage,它位于 UIScrollView 内,因此我可以放大和缩小、裁剪、移动等。
如何获取 UIScrollView 中 UIImage 可见部分的坐标。 我想以原始分辨率裁剪图像(使用 GPUIImage),但我需要矩形的 x、y、宽度和高度。
【问题讨论】:
【参考方案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];
【讨论】:
如何将uiimageview中添加的部分裁剪为子视图(_cropView)?以上是关于在 UIScrollView 中获取 UIImage 可见部分的正确坐标的主要内容,如果未能解决你的问题,请参考以下文章
在 UIScrollView 中获取 UIImage 可见部分的正确坐标
在 UIScrollview 中获取 UIView 的子视图
如何获取 UIScrollView 中滚动的 contentOffset?