我已经搜索了堆栈溢出太多次,也发布了一个问题,但没有成功。我需要在我的拼贴应用程序中实现一个功能,用户可以旋转 uiimage 并将其作为旋转图像移动。知道如何做吗?如果需要,我会尝试所有这些。最近两天寻找它感到沮丧。
首先,我使用 CGAffineTransformMakeRotation(angle) 旋转了 UIImage 的框架。它可以工作,但是当旋转后移动图像时,它会产生失真。那么还有其他方法吗?
编辑:
为了说清楚,
旋转角度是自定义的。
检查了一些类似的问题(旋转变换后更改 uiview 大小 and CGAffineTransformIdentity时如何调整UIView的大小)并阅读关于 CGAffineTransform 的官方文档我得出了一些简单的结论。下面将对其进行解释。
当你使用CGAffineTransform
对于某些具有以下帧变换的对象,您必须使用一些规则才能获得正确的结果:
如果对象的变换属性相等CGAffineTransformIdentity
您可以更改对象的框架或使用CGAffineTransform
无限制。
如果如果对象的变换属性不相等CGAffineTransformIdentity
并且您想要更改对象的框架而不需要CGAffineTransform
:
a)将对象变换的值保存到某个局部(或其他类型)变量
b) 将对象的变换属性设置为 CGAffineTransformIdentity
c) 改变物体的框架
d) 从本地(或其他类型)变量恢复变换值。
- 如果对象的变换属性不相等
CGAffineTransformIdentity
你想使用CGAffineTransform
, 例如new_transform
:
a) use CGAffineTransformConcat([object transform] , new_transform)
获得result_transform
b) 将对象的变换值设置为result_transform
遵守这些简单的规则将有助于避免许多问题。
注意:使用的时候一定要记住CGAffineTransformConcat
所有变换总计。例如:如果要将对象从 6 度旋转到 7 度,则必须将变换旋转添加到 1 度,而不是 7 度。否则,您将获得旋转 6 + 7 = 13 度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)