我有一个要求,需要实现调整 View 大小、旋转和移动 View 的功能。我已经实现了所有三个功能,但过去一周我一直在努力解决一个问题,但无法解决它。
如果我在应用 CGAffineTransformRotate 后尝试通过拖动 View 的右角来调整 View 大小,则 View 的框架会进入不可预测的状态。我后来搜索了这个问题才知道
如果变换属性不是恒等变换,则该属性的值未定义,因此应被忽略。
我看到一个应用程序实现了我真正希望实现的相同功能。在该应用程序中,我们可以在旋转后调整 View 的大小。
应用 CGAffineTransformRotate 后如何通过拖动右角来调整 View 大小
我在 iOS 应用程序开发方面没有太多经验,过去一周我一直在努力解决这个问题,如果有人解决我的问题,我将不胜感激。
我的示例代码
最佳答案
documentation明确表示:
**如果变换属性不是恒等变换,则该属性的值未定义,因此应被忽略。
如果变换属性包含非恒等变换,则框架属性的值未定义且不应修改。在这种情况下,您可以使用 center 属性重新定位 View ,并使用bounds 属性调整大小。**
所以,只需更改 TouchMoved from 中的以下行:
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);
并且您的代码将完美运行。
另外,添加一些边界条件。
关于ios - 当变换属性不是恒等变换时如何调整 View 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675157/