0

我正在以下列方式旋转 UIView:

CGAffineTransform currentTransform = [gestureRecognizer view].transform;    
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation);
[[gestureRecognizer view] setTransform:newTransform]; 

我想在旋转后缩放这个视图的一个维度(宽度或高度)。但是,如果我执行以下操作:

CGAffineTransformScale(self.parent.parentWidget.transform,sX, 1);

我最终得到了一个倾斜的观点。如何防止这种情况并使其在旋转后可以调整一个维度的大小?

这方面的一个例子是在 Keynote 中,您可以在其中旋转一个元素,然后在旋转后抓住一个选择手柄并在该方向上调整该元素的大小。

4

2 回答 2

2

您的问题是您应用转换的顺序之一。如果您在旋转视图后尝试在一维中缩放视图,您将不会产生所需的效果。您的缩放将发生在最终旋转对象的 X 或 Y 维度上,而不是基于其原始坐标系。

为了达到这种效果,您需要创建一个在旋转之前应用缩放的变换,然后将其设置到您的视图中。这可能需要您跟踪 UIView 的旋转和缩放,以便您可以在每次这些值之一更改时重新生成新的变换。

于 2011-07-26T20:40:09.753 回答
0

如果您使用,您的视图将始终倾斜

CGAffineTransformScale(self.parent.parentWidget.transform,sX, 1);

尝试将 x 和 y 缩放相同的值:

CGAffineTransformScale(self.parent.parentWidget.transform,sX, sX);
于 2011-07-26T11:46:59.080 回答