2012-06-18 34 views
2

我在UIView中添加了UIImageView作爲子視圖,然後我用UITouchesBegan中的以下代碼移動此子視圖。旋轉它後移動子視圖,不正確的作品

CGPoint newTouch = [[touches anyObject] locationInView:self]; 
    CGPoint lastTouch = [[touches anyObject] previousLocationInView:self]; 

    float xDif = newTouch.x - lastTouch.x; 
    float yDif = newTouch.y - lastTouch.y; 
    translate = CGAffineTransformMakeTranslation(xDif, yDif); 
    [self setTransform: CGAffineTransformConcat([self transform], translate)]; 

然後我用下面的代碼旋轉這個子視圖。

self.transform=CGAffineTransformRotate(self.transform, RADIANS(180)); 

在這個階段,一切都很好.. 但是當我嘗試再一次將我的子視圖,它在相反的方向,即移動,當我想向上移動它,它向下移動。

有什麼想法?建議?

回答

2

爲什麼使用translate轉換移動子視圖?只需更新center屬性。使用平移變換的問題在於,如果它被旋轉,它確實會在相對於當前旋轉的方向上進行平移(可能不是您所期望的,正如您發現的那樣)。如果你想堅持使用平移變換(再次,爲什麼?),那麼你需要確保你旋轉回0(空檔),做你的位置平移,然後旋轉回你想要的旋轉。

轉換順序的問題。

+0

嗯謝謝gschandler .. !!! –

+0

這可以是一個更好的解決方案,但我正在尋找.. http://dl.dropbox.com/u/22783696/DraggableImage.zip –