2012-07-29 23 views

回答

3

的一點是,在你的handRotate方法要指定一個旋轉變換你的看法。這需要一個永久的(直到你再次修改變換)改變你的視圖在其超視圖中顯示的方式,並且旋轉變換將總是「添加」到你對視圖的幾何屬性所做的任何其他更改。

什麼解釋您所看到的行爲是您的視圖的位置與其定位點之間的相互作用,如Layer Geometry and Transform中所述。 換句話說,平移時修改的center屬性是應用您爲視圖定義的所有變換的結果。另一方面,當您進行平移時,您要做的是修改之前的視圖的位置,然後應用該轉換。

解決此問題的一種方法是使用圖層(CALayer)和修改圖層position屬性而不是視圖center重新構圖代碼。像在:

recognizer.view.layer.position = ... 

我認爲這應該解決它。

(您將需要導入QuartzCore編譯)。

希望這會有所幫助。

+0

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

+0

這是我的代碼,對了?它顯示沒有不同... – heinzkuang 2012-07-29 10:08:31

+0

你可以檢查你的'view.layer.anchorPoint'具有什麼值嗎? – sergio 2012-07-29 10:17:26

相關問題