我在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));
在这个阶段,一切都很好..
但当我再次尝试移动我的子视图时,它会向相反的方向移动,即当我想向上移动时,它会向下移动。
任何想法?建议?
答案 0 :(得分:2)
为什么要使用平移变换移动子视图?只需更新center
属性即可。使用平移变换的问题在于,如果它被旋转,它确实会在相对于当前旋转的方向上转换(可能不是您所期望的,正如您所发现的那样)。如果你想坚持使用平移变换(再次,为什么?),那么你需要确保旋转回0(中性),平移位置,然后旋转回你想要的旋转。
变换顺序很重要。