我已搜查堆栈溢出的次数太多,也发布了一个问题,但徒劳无功。 我需要实现的功能在我的拼贴应用,在那里用户可以旋转的UIImage,并将其移动作为旋转图像。 任何想法怎么办呢? 如果需要的话我会尝试所有的人。 我感到沮丧寻找它的最后两天。
在第i个已旋转使用CGAffineTransformMakeRotation(角度)的UIImage的的帧。 这是工作,但旋转后移动图像时,它被创造失真。 所以,做任何其他方式?
编辑:要清楚,旋转角度为定制。
我已搜查堆栈溢出的次数太多,也发布了一个问题,但徒劳无功。 我需要实现的功能在我的拼贴应用,在那里用户可以旋转的UIImage,并将其移动作为旋转图像。 任何想法怎么办呢? 如果需要的话我会尝试所有的人。 我感到沮丧寻找它的最后两天。
在第i个已旋转使用CGAffineTransformMakeRotation(角度)的UIImage的的帧。 这是工作,但旋转后移动图像时,它被创造失真。 所以,做任何其他方式?
编辑:要清楚,旋转角度为定制。
审议了一些类似的问题( 改变大小的UIView旋转后的变换以及如何调整UIView的时候CGAffineTransformIdentity )并阅读有关CGAffineTransform正式文件我是来一些简单的结论。 下面会解释它们。
当您使用CGAffineTransform
的,接着框架一些对象变换必须使用一些规则来获得正确的结果:
如果变换对象的属性等于CGAffineTransformIdentity
你可以改变对象的框架或使用CGAffineTransform
不受限制。
如果如果变换对象的属性不等于CGAffineTransformIdentity
,你想改变对象的框架没有CGAffineTransform
:
一个)保存对象的值变换到一些地方(或另一种类型)变量
b)列出的变换对象的属性来CGAffineTransformIdentity
c)中对象的变化帧
d)恢复为本地(或另一种类型)变量变换值。
CGAffineTransformIdentity
,你想使用CGAffineTransform
,例如new_transform
: CGAffineTransformConcat([object transform] , new_transform)
以获得result_transform
result_transform
遵守这些简单的规则将有助于避免许多问题。
注意:你必须记住,当你使用CGAffineTransformConcat
所有变换累计。 例如:如果希望从6度至7度旋转对象,则必须添加变换旋转1度,而不是7,否则你获得旋转6 + 7 = 13度。
对于任何人谁可能迁移这里可以找到一些代码,这部分:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
imageToBeMoved.center = CGPointMake(primaryTapPoint.x ,primaryTapPoint.y);
[UIView commitAnimations];
更改:imageToBeMoved.frame到imageToBeMoved.center解决问题