2014-02-05 136 views
1

我是iOS新手,需要具備以下需求。請告訴我如何做到這一點。謝謝!ios-縮放和旋轉蒙面UIImageView

  • 具有由另一圖像(幀)掩蔽的圖像(源極)
  • 用戶可以拖動,縮放,旋轉源圖像。幀圖像保持不變。

我知道如何使用CGImageCreateWithMask以及如何將uiimageview放置在滾動視圖中用於捏縮放。但我不知道如何將這些結合在一起並進行自定義控制。

ideal result

+0

你能分享一些代碼試圖解決這個問題的最後2天,但沒有找到任何解決方案,請幫助我 –

回答

0

要旋轉,您可以使用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。

+0

我最終做的是將imageview作爲子視圖添加到frameviewview並將其裁剪到邊界。 – tjlian616

+0

在哪裏定義_firstX和_firstY –

0

你也可以把幀圖像上,做縮放滾動視圖,作爲一個子視圖。這樣,這兩個圖像應該放大在一起。

+0

Plz提供了一些代碼或視覺,究竟如何實現這一點? – Ajay