旋转后移动子视图,不正确工作

时间:2012-06-18 04:52:25

标签: ios uiimageview rotation subview

我在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));
在这个阶段,一切都很好.. 但当我再次尝试移动我的子视图时,它会向相反的方向移动,即当我想向上移动时,它会向下移动。

任何想法?建议?

1 个答案:

答案 0 :(得分:2)

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

变换顺序很重要。