我正在尝试进行UIView移动并同时旋转。
这是我的代码:
_viewToDrag.frame = CGRectMake(x, y, size, width);
_viewToDrag.transform = CGAffineTransformMakeRotation(-M_PI_2 * multiplier));
随着乘数的增加(0.0 .. 1.0),视图会超出任何逻辑。
这篇文章似乎回答了我的问题: Rotating and Moving a UIImageView (CocoaTouch)
但是,因为我是代码诵读困难而且有点迟钝可以解释一下这会转化为代码:
改为改变“中心”属性。
我会发表评论,但我的声誉不允许。
答案 0 :(得分:1)
框架具有中心属性以及原点和大小。
中心是一个像原点一样的CGPoint,除了它标志着框架的中心而不是左上角。
答案 1 :(得分:1)
请务必查阅文档。 Apple在frame
部分的centre
部分中,在旁边有感叹号图标的大盒子中说:
警告:如果transform属性不是identity变换,那么 此属性的值未定义,因此应忽略。
在CGAffineTransformTranslate
下面,它说:
中心在其超视图的坐标系内指定 并以分数衡量。设置此属性会更改值 相应的框架属性。
所以你链接的答案是不正确的。考虑到它的一句话性质而没有提及来源,可能是作者尝试过一次,在他碰巧安装的iOS版本上,它看起来像是有效的,他直接跳到了一个不支持的结论。
另一个答案是正确的。您需要在转换中构建转换。可能会使用_viewToDrag.transform = CGAffineTransformRotate(
CGAffineTransformMakeTranslation(1000.0, 0.0),
-M_PI_2);
。
编辑:所以,设置一个平移为(1000,0)且旋转为-M_PI / 2的变换:
{{1}}