2

我在 中添加了一个UIImageView作为子视图UIView,然后在 中使用以下代码移动此子视图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));

在这个阶段,一切都很好..但是当我再次尝试移动我的子视图时,它会向相反的方向移动,即当我想向上移动它时,它会向下移动。

有任何想法吗?建议?

4

1 回答 1

2

为什么要使用翻译变换移动子视图?只需更新center属性。使用平移变换的问题在于,如果它被旋转,它确实会在相对于当前旋转的方向上平移(这可能不是您所期望的,正如您所发现的那样)。如果您想坚持使用平移变换(再次,为什么?),那么您需要确保您旋转回 0(中性),进行位置平移,然后旋转回您想要的旋转。

转换顺序很重要。

于 2012-06-18T05:17:00.997 回答