如何在transform属性不是标识转换时调整视图大小

时间:2012-10-01 14:23:21

标签: ios uiview resize rotation cgaffinetransform

我有一个要求,我需要实现该功能来重新调整大小,旋转和移动视图。我已经实现了所有这三个功能,但是我在过去一周内遇到了一个问题我无法解决它。

如果我尝试通过在应用CGAffineTransformRotate后拖动其右角来调整视图大小,则视图框架将进入不可预测状态。后来我才知道这个问题

如果transform属性不是identity变换,则此属性的值未定义,因此应忽略。

我看到一个应用程序实现了我想要实现的相同功能。在该应用程序中,我们可以在旋转后调整视图大小。

如何在应用CGAffineTransformRotate后拖动右角来调整视图大小

我在iOS应用程序开发方面没有太多经验,如果有任何人解决我的问题,过去一周我就会遇到这个问题,我将非常感激。

我的示例代码

http://dl.dropbox.com/u/82675151/sampleImgMv2.zip

1 个答案:

答案 0 :(得分:2)

documentation清楚地说:

**如果transform属性不是identity变换,则此属性的值是未定义的,因此应该被忽略。

如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改。在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性调整大小。**

所以,只需更改touchesMoved中的以下行:

    testVw.frame = CGRectMake(testVw.frame.origin.x, testVw.frame.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth);

为:

    testVw.bounds = CGRectMake(testVw.bounds.origin.x, testVw.bounds.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth);

您的代码将完美无缺。

另外,添加一些边界条件。