2011-06-22 97 views
4

我有一個UIImageView與UIScrollView內的圖像(地圖)。我添加另一個圖像(標記)到圖像視圖(所以地圖背景和標記)。如果標記未顯示在屏幕上,當我放置標記時,我想滾動以顯示標記。當UIScrollView放大時滾動到矩形?

我在地圖上放置標記之後使用了[scrollView scrollRectToVisible:rect animated:YES]。當scrollview沒有放大時,這很好用。如何根據縮放比例調整rect,以便標記在視圖中居中?

回答

11

我在我目前正在使用的應用程序中做了一些非常類似的事情,但我沒有使用-scrollRectToVisible,而是使用-setContentOffset

因爲我知道我的標記在框架中的位置,所以我可以很容易地計算出它的中心,我保存爲CGFloats centerXcenterY。然後我使用下面的代碼居中屏幕上的標記(I從Y值中減去161,因爲我的主視圖具有選項卡欄和導航控制器,所以它是不完整的480分):

CGFloat curZoom = scrollView.zoomScale; 

[scrollView setContentOffset:CGPointMake((centerX*curZoom)-160, (centerY*curZoom)-161) animated:NO]; 

通過將中心點乘以當前的zoomScale,我可以找到正確的中心點,而與縮放級別無關。

我的標記是保存我的地圖的UIImageView的子視圖。這聽起來像是你正在以同樣的方式做,所以我想這(或類似的)應該爲你工作。

+0

還沒有機會嘗試這個,但我認爲它應該工作。我會告訴你。 – jmosesman

+0

而不是在這裏發表評論我已經在下面添加了一篇文章,使其更清潔。 – jmosesman