旋转 UIView 导致它改变位置
Posted
技术标签:
【中文标题】旋转 UIView 导致它改变位置【英文标题】:Rotating UIView Cause It to Change Position 【发布时间】:2014-08-14 13:10:50 【问题描述】:我试图在拖动时围绕其中心旋转 uiview (UIPanGestureRecognizer),但由于某种原因,uiview 的位置也在发生变化。我不明白为什么当它改变旋转时它会改变位置,因为我根本不尝试改变位置。旋转不是应该相对于uiview的中心旋转uiview吗?
如下所示:https://www.youtube.com/watch?v=5M1L2MyPdbg&feature=youtu.be
这是我的代码:
- (void)rotateHand:(UIPanGestureRecognizer *)panGesture
if ([(UIPanGestureRecognizer*)panGesture state] == UIGestureRecognizerStateBegan)
CGPoint touchPoint = [panGesture locationInView:[self view]];
float dx = touchPoint.x - minHandContainer.center.x;
float dy = touchPoint.y - minHandContainer.center.y;
arcTanMin = atan2(dy,dx);
startTransform = minHandContainer.transform;
if ([(UIPanGestureRecognizer*)panGesture state] == UIGestureRecognizerStateChanged)
CGPoint pt = [panGesture locationInView:[self view]];
float dx = pt.x - minHandContainer.center.x;
float dy = pt.y - minHandContainer.center.y;
float ang = atan2(dy,dx);
float angleDifference = arcTanMin - ang;
minHandContainer.transform = CGAffineTransformRotate(startTransform, -angleDifference);
【问题讨论】:
旋转只是边界的变化。所以如果你使用自动布局,当你旋转时,子视图会改变它的边界..它可能会改变位置 【参考方案1】:有几件事可能会发生。首先,如果您启用了自动布局,它可能会对您的旋转产生一些奇怪的影响,例如在旋转过程中试图保持 UIView 和设备侧面之间的边界,正如this 线程中所讨论的那样。尝试将其关闭并测试它是否当前处于打开状态。
如果不是这样,您可能需要查看this 线程。
【讨论】:
以上是关于旋转 UIView 导致它改变位置的主要内容,如果未能解决你的问题,请参考以下文章