【问题标题】:ios- zoom and rotate a masked UIImageView [closed]ios-缩放和旋转蒙面的 UIImageView [关闭]
【发布时间】:2014-02-10 16:47:27
【问题描述】:

我是 iOS 新手,需要满足以下需求。请给我一些关于如何做到这一点的指导。谢谢!

  • 让一个图像(源)被另一个图像(帧)掩盖
  • 用户可以拖动、缩放、旋转源图像。帧图像保持静止。

我知道如何使用 CGImageCreateWithMask 以及如何将 uiimageview 放在滚动视图中以进行缩放。但我不知道如何将这些组合在一起并制作自定义控件。

【问题讨论】:

  • 你能分享一些过去两天试图解决这个问题但没有找到任何解决方案的代码,请帮助我

标签: ios objective-c uiimageview uigesturerecognizer mask


【解决方案1】:

要旋转图像,您可以使用 UIPanGestureRecognizer 并放大/缩小您可以使用 UIPinchGestureRecognizer。可能是下面的代码可以帮助你。

// 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];

    }

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

【讨论】:

  • 我最终所做的是将 imageview 作为子视图添加到框架 imageview 并将其裁剪到边界。
  • 在哪里定义_firstX和_firstY
【解决方案2】:
【解决方案3】:

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

【讨论】:

  • 请提供一些代码或视觉效果,具体如何实现?
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多