根据 UIScrollView 的中心点在 UIScrollView 中找到 CGPoint of View
Find CGPoint of view inside UIScrollView depending of UIScrollView's center point
我有一个 UIScrollView,里面有一个 UIImageView。主要目标是在 de UIScrollView 中移动 UIImageView,如拖动、缩放等。
让我们假设滚动视图的框架是 100x100。
UIImageView 的大小为 250x100。所以,我们可以在不缩放的情况下从左向右拖动,放大时可以从上向下拖动。
- 我知道 UIScrollView 的中心 = (50,50) => CGPoint
我的问题是:如何让 UIImageView 的 CGPoint 等同于滚动视图的中心 CGPoint?
希望以下是对场景的有用描述:
非常感谢你们的帮助!
使用UIView
的convert
方法将点从滚动视图转换为图像视图:
let imageViewPoint = scrollView.convert(CGPoint(x: 50, y: 50), to: imageView)
感谢 rmaddy 的帮助。
解决方法如下:
//FYI: focusPoint.scale is the zoomScale of the UIScrollView.
let originVisible = scrollView.contentOffset
let convertedPoint = scrollView.convert(originVisible, to: imageView).scaledBy(scale: focusPoint.scale)
let imageViewPoint = CGPoint(x: convertedPoint.x + scrollView.center.x,
y: convertedPoint.y + scrollView.center.y)
extension CGPoint {
func scaledBy(scale: CGFloat) -> CGPoint {
return CGPoint(x: x * scale, y: y * scale)
}
}
我有一个 UIScrollView,里面有一个 UIImageView。主要目标是在 de UIScrollView 中移动 UIImageView,如拖动、缩放等。
让我们假设滚动视图的框架是 100x100。 UIImageView 的大小为 250x100。所以,我们可以在不缩放的情况下从左向右拖动,放大时可以从上向下拖动。
- 我知道 UIScrollView 的中心 = (50,50) => CGPoint
我的问题是:如何让 UIImageView 的 CGPoint 等同于滚动视图的中心 CGPoint?
希望以下是对场景的有用描述:
非常感谢你们的帮助!
使用UIView
的convert
方法将点从滚动视图转换为图像视图:
let imageViewPoint = scrollView.convert(CGPoint(x: 50, y: 50), to: imageView)
感谢 rmaddy 的帮助。
解决方法如下:
//FYI: focusPoint.scale is the zoomScale of the UIScrollView.
let originVisible = scrollView.contentOffset
let convertedPoint = scrollView.convert(originVisible, to: imageView).scaledBy(scale: focusPoint.scale)
let imageViewPoint = CGPoint(x: convertedPoint.x + scrollView.center.x,
y: convertedPoint.y + scrollView.center.y)
extension CGPoint {
func scaledBy(scale: CGFloat) -> CGPoint {
return CGPoint(x: x * scale, y: y * scale)
}
}