我有一個UIScrollView
甲與子視圖乙,(其本身是A
的內容查看d的子視圖 - 所以乙是不是滾動視圖的內容視圖A
)它有一個子視圖,我們稱之爲C。的UIScrollView -zoomToRect:動畫:與視圖之間轉換CGPoint
+------------------------+
| A |
| |
| +-------------------+ |
| |D (=contentView) | |
| | +-----------+ | |
| | | B | | |
| | | +--+ | | |
| | | |C | | | |
| | | +--+ | | |
| | +-----------+ | |
| +-------------------+ |
+------------------------+
我想了滾動精確放大,因此C充溢着我的iPhone的屏幕,或者至少它顯示給我儘可能的大。 我無法圍繞縮放前的滾動視圖的zoomScale
(讓我們假設我在放大縮放並且縮放比例爲2.45時放大)的頭部。 所以第一個問題是,zoomScale是否會影響UIScrollView放大的矩形?
我的第二個問題是關於CGPoint轉換。 iOS有一些內置函數可以在視圖之間轉換CGPoints/CGRects,但是我根本無法從給定的引用中產生任何有效的東西。
這是我打算做:
1)轉換ç的原點一個的座標系:
CGPoint originConvertedToAsCoordinateSystem = [self convertPoint:C.frame.origin toView:A];
2)放大到矩形與給定的ç起源:
//shortened for the purpose of readability
CGPoint p = originConvertedToAsCoordinateSystem;
CGRect zoomRect = CGRectMake(p.x,p.y,C.frame.size.width,C.frame.size.height);
[A zoomToRect:zoomRect animated:YES];
我有neglecte d在我給出的例子中,A的zoomScale
的值,因爲我真的不知道是要乘數還是除數。
不知道我理解你的問題。只需要注意:縮放矩形必須位於內容視圖的座標空間中(我假設它是子視圖B),因此您無需轉換C.frame,只需按原樣使用即可。 – yurish
@yurish我只想將滾動視圖'A'放大到視圖'C'的原點。我不能'僅僅使用'C'的框架',因爲它的框架在'B'的座標系中。所以我必須將'C'的原點轉換爲'A'的座標空間。 –
對不起,但「放大原點」(這是點,而不是矩形)對我來說沒有多大意義。你有沒有讀過zoomToRect方法的描述?它明確指出:「該矩形應位於viewForZoomingInScrollView返回的視圖的座標空間中:」。您的案例中的視圖必須是B,而不是您正在嘗試執行的滾動視圖本身。無論如何看到答案。 – yurish