我以以下方式旋转UIView:

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


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

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


我最终看到了歪斜的观点。如何防止这种情况发生,并使其能够在旋转后重新调整一个尺寸?

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

最佳答案

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

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

关于iphone - 旋转后沿一个方向缩放UIView时如何防止偏斜?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6828662/

10-16 19:32