1

我正在使用 UIImageView 设置旋转和水平翻转

#define DegreesToRadians(x) ((x) * M_PI / 180.0)
imageView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(-1, 1),CGAffineTransformMakeRotation(DegreesToRadians(-5))); 

这个操作改变了 UIImageView 的 xOrigin + yOrigin + width + height。

我可以将新原点维护或重置为 UIImageView 的实际原点吗?或者我不能只旋转 UIImageView,而不改变框架。

4

1 回答 1

2

您可以CGPoint在应用转换之前将原点存储到变量中。之后将其分配给您的图像视图。

CGPoint origin = imageView.frame.origin;
imageView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(-1, 1),CGAffineTransformMakeRotation(DegreesToRadians(-5)));

imageView.frame = CGRectMake(origin.x, origin.y, imageView.frame.size.width, imageView.frame.size.height);

// or

CGRect frame = imageView.frame;
frame.origin = origin;
imageView.frame = frame;

更新

如果您想撤消旋转并想回到以前的外观而不是使用:

imvCoverPhoto.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(-1, 1),CGAffineTransformMakeRotation(DegreesToRadians(0)));

只需要传入 0 即可DegreesToRadians。这会将您的图像转换回原始图像。

希望这会有所帮助,并且正是您正在寻找的东西:)

于 2013-07-09T10:42:55.023 回答