Uiview 如何使用CGAffineTransform移动和旋转视图?

Uiview 如何使用CGAffineTransform移动和旋转视图?,uiview,uigesturerecognizer,cgaffinetransform,Uiview,Uigesturerecognizer,Cgaffinetransform,我想使用平移手势识别器移动视图 UIPanGestureRecognizer *gesture; CGPoint touch = [gesture locationInView:view.superview]; view.frame = CGRectMake(touch.x, touch.y, view.frame.size.width, view.frame.size.height); 此外,我希望在视图移动时旋转视图 view.transform = CGAffineTransform

我想使用平移手势识别器移动视图

UIPanGestureRecognizer *gesture;

CGPoint touch = [gesture locationInView:view.superview];

view.frame = CGRectMake(touch.x, touch.y, view.frame.size.width, view.frame.size.height);
此外,我希望在视图移动时旋转视图

view.transform = CGAffineTransformMakeRotation(multiplier * M_2_PI);
我有两个基本问题:

  • 移动不是从用户触摸视图的点开始的
  • 当我尝试移动和旋转视图时,它超出了逻辑范围

  • 有人能给我一个关于如何使用CGAffineTransform解决这些问题的非常基本的代码示例,而不是去阅读这些和那些吗?

    您可以在这里找到代码示例 主要思想是

  • 保存视图中心的起点
  • 找到平移并将其应用于视图中心
  • 若要更改帧,应在应用之前设置标识变换,并在应用之后恢复变换,因为帧是边界、中心、变换()的函数
  • 这是一些代码:

    if (_panRecognizer.state == UIGestureRecognizerStateBegan)
    {
        _startCenter = _frameView.center;
    }
    else if (_panRecognizer.state == UIGestureRecognizerStateChanged)
    {
        CGPoint transition = [_panRecognizer translationInView:self.view];
        CGPoint newCenter = CGPointMake(_startCenter.x + transition.x, _startCenter.y + transition.y);
        self.frameView.center = newCenter;
    }
    else
    {
    
    }
    


    可能重复的否,它不是重复的。
    CGAffineTransform transform = self.frameView.transform;
    self.frameView.transform = CGAffineTransformIdentity;
    self.frameView.frame = CGRectInset(self.view.bounds, CGRectGetWidth(self.view.bounds) / 3.0, CGRectGetHeight(self.view.bounds) / 3.0);
    self.frameView.transform = transform;