簡體   English   中英

Xcode UIScrollView縮放與MKMapView縮放相同(對子視圖無效)

[英]Xcode UIScrollView zoom same as MKMapView zoom (no effect on subview)

我想在UIScrollView上添加縮放效果。 我已經用UIScrollView委托方法實現了它。

(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

現在,我想添加MKMapView所具有的效果,如果我們放大或縮小地圖的MKMapView位置標記,則該標記將保持相同的位置和相同的大小。 如何使用UIScrollView縮放效果實現相同的效果。

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

謝謝,傑伊·斯蒂芬。

如果我理解正確,則希望能夠放大和縮小滾動視圖,同時其上的所有可視對象都“固定”在其位置。 我建議您使用UIScrollViewzoomScale屬性,該屬性告訴您應該應用於滾動視圖的內容位置的乘數。

假設您最初有一個對象(例如UIImage ),其center位於x = 100.0y = 100.0zoomScale = 1.0 定義幾個常量/變量以將那些坐標存儲在某個地方(例如,將它們initialXinitialY )。 然后,您可以在UIScrollViewDelegate協議的- scrollViewDidZoom:方法中跟蹤zoomScale值,並將初始(不是當前!)坐標乘以zoomScale的值即可。

例如(根據您的代碼進行調整):

#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;
}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM