平移视图和旋转问题

| 我有一个自定义的UIImageView,我可以通过使用(xDif和yDif是手指移动的量)进行翻译来在屏幕上拖动它:
CGAffineTransform translate = CGAffineTransformMakeTranslation(xDif, yDif);
[self setTransform: CGAffineTransformConcat([self transform], translate)]; 
假设我在x和y方向上将ImageView移了50px。然后,我尝试通过以下方式旋转ImageView(通过手势识别器):
CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]);
myImageView.transform = transform;
发生的情况是ImageView突然移动到ImageView最初所在的位置(平移之前-并非从移动的位置+两个方向上均为50px)。 (似乎无论我如何翻译视图,ImageView子类的self.center都保持不变-最初在IB中放置的位置)。 另一个问题是,如果我将ImageView旋转30度,然后再尝试再旋转一点,它将再次从原始位置(角度= 0)开始,然后从那里开始,为什么它不从角度30度而不是0。     
已邀请:
        您正在覆盖早期的转换。要添加到当前转换中,您应该执行以下操作–
myImageView.transform = CGAffineTransformRotate(myImageView.transform, recognizer.rotation);
由于您要按顺序更改
transform
属性,因此应改用
CGAffineTransformRotate
CGAffineTransformTranslate
CGAffineTransformScale
,以便添加到原始转换中而不创建新转换。     

要回复问题请先登录注册