如何以编程方式在UIScrollView中最佳定位图像(UIImageView)?
我有需要在UIScrollView中水平和垂直居中的图像位置的x和y坐标(CGPoint C = centerCoordinate)。
===Image=============================================
| |
| |
| ==ScrollView=== |
| | | |
| | C | |
| | | |
| =============== |
| |
| |
| |
| |
=====================================================
我试过了 a)使用ImageView的center属性,但似乎没有在这里取得进展。 b)然后我尝试通过将原点设置为
来计算frame-property C.x = -1 * centerCoordinate.x + ScrollView.frame.size.width / 2
C.y = -1 * centerCoordinate.y + ScrollView.frame.size.width / 2
但没有成功。
任何提示?
问候
答案 0 :(得分:0)
我想我找到了这样做的方法。让我印象深刻的是如何考虑zoomScale以及分析正确的帧坐标,因为这些在缩放和放大期间会发生变化。滚动活动。
现在似乎有效的解决方案是在UIScrollView中实现的,如下所示:
- (void) setViewPosition:(CGPoint) tapPoint zoomScale:(NSNumber *)zoomScale {
...
self.zoomScale = zoomScale.floatValue;
// Determine new center coordinate
CGPoint mCOffset;
mCOffset.x = tapPoint.x * self.zoomScale - frameSizeIvar.width / 2;
mCOffset.y = tapPoint.y * self.zoomScale - frameSizeIvar.height / 2;
// Check whether center coordinate will place the map out of range
// x-coordinate
if ( mCOffset.x < 0 )
mCOffset.x = 0;
else if ( mCOffset.x > imageView.bounds.size.width * self.zoomScale - frameSizeIvar.width)
mCOffset.x = imageView.bounds.size.width * self.zoomScale - frameSizeIvar.width;
// y-coordinate
if ( mCOffset.y < 0 )
mCOffset.y = 0;
else if ( mCOffset.y > iMapImageView.bounds.size.height * self.zoomScale - frameSizeIvar.height)
mCOffset.y = iMapImageView.bounds.size.height * self.zoomScale - frameSizeIvar.height;
self.contentOffset = mCOffset;
...
}