我有一個UIScrollView並添加一個UIView裏面,當我放大它,是有可能得到縮放幀的CGRect相對於原始幀?獲取相對的UIScrollView的縮放幀原始尺寸
E.g.我有800x600的框架,然後我放大到{{50,60},{100,100}}是否有可能以編程方式獲取縮放框架?
我有一個UIScrollView並添加一個UIView裏面,當我放大它,是有可能得到縮放幀的CGRect相對於原始幀?獲取相對的UIScrollView的縮放幀原始尺寸
E.g.我有800x600的框架,然後我放大到{{50,60},{100,100}}是否有可能以編程方式獲取縮放框架?
我通常使用以下的方法(添加到自定義的UIScrollView類):
- (CGRect) visibleRect{
CGRect visibleRect;
visibleRect.origin = self.contentOffset;
visibleRect.size = self.bounds.size;
visibleRect.origin.x /= self.zoomScale;
visibleRect.origin.y /= self.zoomScale;
visibleRect.size.width /= self.zoomScale;
visibleRect.size.height /= self.zoomScale;
return visibleRect;
}
溶液@Vladimir的問題是,它顯示的visibleRect錯如果viewForZoom比滾動型界限小。所以我想出了這個解決方案。
- (CGRect) zoomedFrame{
CGRect zoomedFrame;
zoomedFrame.origin = self.contentOffset;
zoomedFrame.origin.x -= zoomingView.frame.origin.x;
zoomedFrame.origin.y -= zoomingView.frame.origin.y;
zoomedFrame.size = self.contentSize;
return zoomedFrame;
}
zoomingView
是返回viewForZoomingInScrollView:
方法的圖。
bounds
是scrollView的界限。
所以,一般有兩種情況:
當zoomingView
比bounds
較小,contentOffset
反映的不是內容視圖的左上角,但有些奇怪的說法相對含量的轉變到bounds
的中心。並且zoomingView.frame.origin
具有正常值,就好像zoomingView
位於bounds
的中心。 (出現這種情況,如果你試圖縮小zoomingView超過minimulScale
)
當zoomingView
比bounds
bigget,zoomingView.frame.origin
有奇怪的值是這樣的:
{-6.15367e-06,3.98168 e-06}
and contentOffset
顯示它是什麼should。
因此,所有我在我的代碼表明,補償對方。
謝謝,預期:)如果你離開我的回答一些評論 – Manny 2010-10-04 11:46:47
將不勝感激工作。 – DanSkeel 2012-05-25 18:31:08