2011-05-16 68 views
1

我有一个UIScrollView对象。在这个滚动条内部,我有一张图片,在图片上有一些对象(如图片的子视图),就像Photoshop组合中的图层一样。所以,如果我放大图片,对象将会放大。如果我滚动图片,对象滚动。iPhone - 滚动一个UIScrollView保持移动

现在考虑这个问题:我在放大图像时,图像现在比iPad屏幕更大。我看到了图片的上半部分。我触摸画面上方的对象并将其拖动到屏幕底部。我的意图是拖放图片底部的拖动对象,但当图片放大时,我必须拖动元素到屏幕底部,释放它,向上滚动图片,然后继续拖动对象。

我想是这样的:我开始拖动,当我在屏幕的边界到达,滚动条滚动的开始那名向下或向上的图像自动显示部分。

什么我需要的是知道RECT是可见的,一种scrollRectToVisible的逆...

考虑到的图片可以在任何级别进行缩放,我怎么知道如果元素我拖动靠近边界。顺便说一句,我怎么知道哪部分的滚动显示,即使它是放大?

谢谢。

回答

1

可见矩形的大小为scrollView.bounds.size,原点为scrollView.contentOffset,在scrollview的坐标空间中。根据你在做什么,你可能需要使用convertRect:fromView:convertRect:toView:将其转换成缩放视图的坐标空间。

+0

我不认为这是真的,因为当视图放大时,我现在为我的代码运行它,当我放大时,它说我正在查看图像的以下矩形部分:{648,2258, 1024,668} ...如果我的图像只有1024x768,我该如何获得648和2258的偏移量? – SpaceDog 2011-05-17 01:40:56

+0

@DigitalRobot:如果zoomScale是4,那么就滚动视图而言,图像是4096x3072,这很容易让你偏移648和2258.'[scrollView convertRect:rect toView:imageView]'将正确这个缩放因子给你在图像坐标空间的坐标,除非你手动搞乱了imageView的'transform'。 – Anomie 2011-05-17 01:47:55

+0

谢谢。我知道了!!! – SpaceDog 2011-05-17 11:44:21