ios - 当变换属性不是恒等变换时如何调整 View 大小

标签 ios uiview resize rotation cgaffinetransform

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

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

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

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

应用 CGAffineTransformRotate 后如何通过拖动右角来调整 View 大小

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

我的示例代码

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

最佳答案

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/

相关文章:

c++ - 如何在 SetWindowPos() 之后同步窗口的系统菜单?

ios - 在 Swift 中使用 OHHTTPStubs 测试请求体

ios - 如何在点击 Swift4 时关闭 UIView

ios - iOS 中主视图/详细 View 中的 subview 管理(使用 ARC)

iphone - 在不引发警告的情况下以动画方式进出 iAd

javascript - 调整 Canvas 大小,问题在哪里?

iphone - 在 map View 上拖动自定义图钉

ios - 按下完成按钮后使 AVPlayerViewController 继续播放

iOS 指定初始化器 : Using NS_DESIGNATED_INITIALIZER

jquery - 如何使用 jquery 调整文本框大小并获取 div 元素内的尺寸