爲什麼在旋轉後使用「pan」會使視圖變得相反?爲什麼我使用「平底鍋」後rotae會使視圖走相反的方式?
看來這兩個手勢都使用不同的座標系嗎?旋轉使用一個旋轉,並泛用正常的?
如果視圖旋轉到0'或360'附近,平移將是正常的,並且如果視圖旋轉更多到180',則「平移」將使視圖更加相反。
謝謝。
爲什麼在旋轉後使用「pan」會使視圖變得相反?爲什麼我使用「平底鍋」後rotae會使視圖走相反的方式?
看來這兩個手勢都使用不同的座標系嗎?旋轉使用一個旋轉,並泛用正常的?
如果視圖旋轉到0'或360'附近,平移將是正常的,並且如果視圖旋轉更多到180',則「平移」將使視圖更加相反。
謝謝。
的一點是,在你的handRotate
方法要指定一個旋轉變換你的看法。這需要一個永久的(直到你再次修改變換)改變你的視圖在其超視圖中顯示的方式,並且旋轉變換將總是「添加」到你對視圖的幾何屬性所做的任何其他更改。
什麼解釋您所看到的行爲是您的視圖的位置與其定位點之間的相互作用,如Layer Geometry and Transform中所述。 換句話說,平移時修改的center
屬性是應用您爲視圖定義的所有變換的結果。另一方面,當您進行平移時,您要做的是修改之前的視圖的位置,然後應用該轉換。
解決此問題的一種方法是使用圖層(CALayer
)和修改圖層position
屬性而不是視圖center
重新構圖代碼。像在:
recognizer.view.layer.position = ...
我認爲這應該解決它。
(您將需要導入QuartzCore編譯)。
希望這會有所幫助。
CGPoint translation = [recongnizer translationInView:self.view]; recongnizer.view.layer.position = CGPointMake(recongnizer.view.layer.position.x + translation.x,recongnizer.view.layer.position.y + translation.y); [recongnizer setTranslation:CGPointMake(0,0)inView:self.view]; – heinzkuang 2012-07-29 10:05:42
這是我的代碼,對了?它顯示沒有不同... – heinzkuang 2012-07-29 10:08:31
你可以檢查你的'view.layer.anchorPoint'具有什麼值嗎? – sergio 2012-07-29 10:17:26