2

我有一个要求,我需要实现重新调整大小、旋转和移动视图的功能。我已经实现了所有三个功能,但过去一周我一直在努力解决一个问题,我无法解决它。

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

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

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

应用 CGAffineTransformRotate 后如何通过拖动视图的右上角来调整视图的大小

我在 iOS 应用程序开发方面没有太多经验,过去一周我一直在努力解决这个问题,如果有人解决了我的问题,我将不胜感激。

我的示例代码

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

4

1 回答 1

2

文档清楚地说:

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

如果 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);

你的代码会很好地工作。

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

于 2012-10-01T16:14:35.697 回答