2012-06-03 117 views
1

上的UIImageView使用convertRectToView我有一個UIImageView稱爲draggableImageView即一個UIView的稱爲tiltedView經由CATransform3DRotate並用透視transform.m34 = -1/400.0向後傾斜的子視圖。這樣,當我拖動draggableImageView時,其視角和絕對尺寸會發生變化,因此它看起來在tiltedView內的雙空間中移動。在CATransform3DRotate旋轉的的UIView

我想計算幀爲draggableImageViewtiltedView但使用不同的座標系(在這種情況下,一個UIView稱爲viewForCoordinates即不傾斜並且包括整個屏幕)。但是,使用draggableImageView內的[self convertRect:self.frame toView:self.viewForCoordinates]將輸出相同大小的幀,而不管tiltedView my draggableImageView所在的位置。

我使用self.frame的數字比self.bounds更合適,因爲bounds對superview不可知,而frame依賴於它。不過,基於上述,我猜測convertRect只是將self.frame轉換爲self.frame的超級觀點的視角操作的不可知。

我不確定在這種情況下哪些代碼會有幫助,因此請讓我知道我可以提供哪些代碼來幫助解答此問題。

回答

0

我解決了這個問題!

所以,我認爲有兩個主要問題:

1)當DraggableImageView觸摸對象,確保對象確實正在通過if ([touch view] == self)感動中- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

2)轉換觸摸位置superview通過座標系self.touchLocation = [[touches anyObject] locationInView:self.superview]

3)將DraggableImageView的幀從superview座標轉換爲viewForCoordinates座標系。 < < < 我認爲我的錯誤是我從self而不是superview轉換而來。

4)如果使向DraggableImageView變化'基於viewForCoordinates S架構或位置,計算內viewForCoordinates變化的座標systemm然後轉換回DraggableImageViewsuperview。 < < < 我想我忘了做這個轉換:S