ios - 旋转 subview 后移动 subview ,无法正常工作

标签 ios uiimageview rotation subview

我在 UIView 中添加了一个 UIImageView 作为 subview ,然后在 UITouchesBegan 中使用以下代码移动该 subview 。

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)];

然后我使用以下代码旋转该 subview 。

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

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

有什么想法吗?有什么建议吗?

最佳答案

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

变换的顺序很重要。

关于ios - 旋转 subview 后移动 subview ,无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11077075/

相关文章:

ios - UILabel sizeToFit 不适用于自动布局 ios6

ios - 图像高度限制不起作用

python - 在 Matplotlib 中将文本旋转到对数刻度上的一条线上

ios - AudioFileReadPacketData 在传递有效文件时返回 -50

ios - 设置 "edgesForExtendedLayout = UIRectEdgeNone"不会阻止我的 subview 在 iOS 7 中向上移动

iphone - 触摸开始驳回 View

ios - 在另一个 View Controller 中设置 UIImageView

android - 将YUV420Sp图像逆时针旋转90度

android - 在旋转时我得到 "Unable to destroy activity ... Can not perform this action after onSaveInstanceState"

ios - 当现有的过渡或演示正在进行时;导航堆栈将不会更新