2015-05-12 76 views
0

我想在我的UIScrollView上添加縮放效果。我用UIScrollView委託方法實現了它。Xcode UIScrollView縮放與MKMapView縮放相同(對子視圖沒有影響)

(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

現在我想添加MKMapView所具有的效果,如果我們放大或縮小MKMapView地圖的位置標記保持在相同的位置和相同的尺寸。我們如何才能達到與UIScrollView縮放效果相同的效果。

我最初的猜測是用CGAffineTransform做些事情。但問題是何時以及如何?

謝謝, 傑伊斯蒂芬。

回答

0

如果我理解正確,您希望能夠放大和縮小滾動視圖,而其上的所有可視對象仍然「錨定」到其位置。我建議你使用UIScrollViewzoomScale屬性,它告訴你乘數應該應用到滾動視圖的內容位置。

說,最初你有一些對象(UIImage,例如)與它的centerx = 100.0y = 100.0zoomScale = 1.0。定義一些常量/變量來存儲這些座標(例如,我們稱它們爲initialXinitialY)。然後你跟蹤zoomScaleUIScrollViewDelegate協議的- scrollViewDidZoom:方法,並簡單地乘以初始(不是當前!)座標與zoomScale的值。

E.g. (調整你的代碼):

#pragma mark - UIScrollViewDelegate 

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    CGFloat currentScale = scrollView.zoomScale; 

    // Adjust object's position. 
    CGPoint currentCenter = yourObject.center; 

    currentCenter.x = initialX * currentScale; 
    currentCenter.y = initialY * currentScale; 

    yourObject.center = currentCenter; 
} 

希望這會有所幫助。

+0

好吧,我標記你的答案,這也是解決方案。但在我的情況下,我通過重新調整框架來處理它,而不是移動中心。 –