Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios-缩放和旋转蒙版UIImageView_Ios_Objective C_Uiimageview_Uigesturerecognizer_Mask - Fatal编程技术网

ios-缩放和旋转蒙版UIImageView

ios-缩放和旋转蒙版UIImageView,ios,objective-c,uiimageview,uigesturerecognizer,mask,Ios,Objective C,Uiimageview,Uigesturerecognizer,Mask,我是iOS新手,需要具备以下需求。请告诉我怎么做。谢谢 使一个图像(源)被另一个图像(帧)遮罩 用户可以拖动、缩放、旋转源图像。帧图像保持静止 我知道如何使用CGImageCreateWithMask,以及如何将uiimageview放在scrollview中进行收缩缩放。但我不知道如何将这些组合在一起并创建自定义控件 要旋转图像,可以使用UIPangEstureRecognitor;要放大/缩小图像,可以使用UIPinchEstureRecognitor。下面的代码可能对您有所帮助 //

我是iOS新手,需要具备以下需求。请告诉我怎么做。谢谢

  • 使一个图像(源)被另一个图像(帧)遮罩
  • 用户可以拖动、缩放、旋转源图像。帧图像保持静止
我知道如何使用CGImageCreateWithMask,以及如何将uiimageview放在scrollview中进行收缩缩放。但我不知道如何将这些组合在一起并创建自定义控件


要旋转图像,可以使用UIPangEstureRecognitor;要放大/缩小图像,可以使用UIPinchEstureRecognitor。下面的代码可能对您有所帮助

// In your vieDidLoad use:

    UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panned:)];

    UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinched:)];
    [self.imageview addGestureRecognizer:pinch];
    [self.imageview addGestureRecognizer:pan];

    and add the selector methods:

    // To zoom in/out
    - (void)pinched:(UIPinchGestureRecognizer *)sender {

    if (sender.scale >1.0f && sender.scale < 2.5f) {
    CGAffineTransform transform = CGAffineTransformMakeScale(sender.scale, sender.scale);
    imageview.transform = transform;
    }
    }

    //To rotate
    -(void) panned:(UIGestureRecognizer *)gesture
    {
    CGPoint translatedPoint = [(UIPanGestureRecognizer*)gesture translationInView:imageview];

    if([(UIPanGestureRecognizer*)gesture state] == UIGestureRecognizerStateBegan) {
        _firstX = [imageview center].x;
        _firstY = [imageview center].y;
    }   
    translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y);  
    [imageview setCenter:translatedPoint];

    }
//在您的应用程序中:
UIPangestureRecognitzer*pan=[[UIPangestureRecognitzer alloc]initWithTarget:self action:@selector(panned:)];
UIPinchGestureRecognizer*pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:自操作:@selector(pinched:)];
[self.imageview addgestureignizer:pinch];
[self.imageview addgesturecognizer:pan];
并添加选择器方法:
//放大/缩小
-(void)pinched:(uipinchgestrerecognizer*)发送方{
如果(sender.scale>1.0f&&sender.scale<2.5f){
CGAffineTransform transform=CGAffineTransformMakeScale(sender.scale,sender.scale);
imageview.transform=转换;
}
}
//轮换
-(无效)平移:(UIgestureRecognitor*)手势
{
CGPoint translatedPoint=[(UIPangestureRecognitor*)手势转换视图:图像视图];
if([(UIPangestureRecognitizer*)手势状态]==UIgestureRecognitizerStateStart){
_firstX=[imageview center].x;
_firstY=[imageview center].y;
}   
translatedPoint=CGPointMake(_firstX+translatedPoint.x,_firstY+translatedPoint.y);
[图像视图设置中心:平移点];
}

在您的视图中,您还应该将您的帧作为子视图添加到imageview中。

这两个链接将100%帮助您


您还可以将帧图像作为子视图放在进行缩放的滚动视图上。这样,两个图像应该一起缩放。

Plz提供一些代码或视觉,如何做到这一点?我最终做的是将imageview作为子视图添加到frame imageview中,并将其剪裁到边界。在何处定义_firstX和_FirstY您可以共享一些代码在过去2天内尝试解决此问题,但未找到任何解决方案请帮助我