[英]Xcode UIScrollView zoom same as MKMapView zoom (no effect on subview)
我想在UIScrollView
上添加縮放效果。 我已經用UIScrollView
委托方法實現了它。
(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
。
現在,我想添加MKMapView
所具有的效果,如果我們放大或縮小地圖的MKMapView
位置標記,則該標記將保持相同的位置和相同的大小。 如何使用UIScrollView
縮放效果實現相同的效果。
我最初的猜測是使用CGAffineTransform
做一些事情。 但是問題是何時以及如何?
謝謝,傑伊·斯蒂芬。
如果我理解正確,則希望能夠放大和縮小滾動視圖,同時其上的所有可視對象都“固定”在其位置。 我建議您使用UIScrollView
的zoomScale
屬性,該屬性告訴您應該應用於滾動視圖的內容位置的乘數。
假設您最初有一個對象(例如UIImage
),其center
位於x = 100.0
, y = 100.0
和zoomScale = 1.0
。 定義幾個常量/變量以將那些坐標存儲在某個地方(例如,將它們initialX
和initialY
)。 然后,您可以在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.