2012-08-16 42 views
1

進行雙重操作這一次,而在執行UIImageView的雙重操作我現在面臨的問題是指而上的UIImageView

1) Zoom+Flip the Image 

2)Zoom + Reverse the Image 

3)Zoom + Flip or Reverse + Rotate(+- 90)deg 

,請幫助找出這個問題的解決方案。在這個用於縮放的例子中,我使用了GuestureRecognizer進行fliping + Revesing + Rotating UIImageView I使用UIButton進行這些操作,所以我如何能夠在UIImage上處理這些操作,組合如何處理這些操作

究竟是什麼問題當我放大或縮小圖像在同一時間我想要旋轉(+ -90度)或翻轉或反轉的圖像在確切的放大或縮小位置,但這段時間圖像得到復位,然後執行相應的操作,如旋轉,翻轉,反向我想同時做它的UIImage

我的代碼

if (btnNames == "Rotate R") 
{ 
Angle = deg + 90; 
imgview.Transform = CGAffineTransform.MakeRotation (Angle * (float)Math.PI/180); 
return Angle; 
} else 
{ 
Angle = deg - 90; 
imgview.Transform = CGAffineTransform.MakeRotation (Angle * (float)Math.PI/180); 
    return Angle; 

}

對於反向

CGAffineTransform transform = CGAffineTransform.MakeScale (-1, 1); 
imgView.Transform = transform; 
return true; 

============ 倒裝

if (flips == false) 
{ 
CGAffineTransform transform = CGAffineTransform.MakeScale (1, -1); 
imgView.Transform = transform; 
return true; 
} 

這個代碼我實現了它正常工作分開進行操作。但我想上的UIImage

同時工作
+1

幫助我們來幫助你。您沒有描述您面臨的問題(缺少說明),也未描述您如何嘗試實現這些操作(例如代碼)。如果他們不必猜測這些信息,答案將會更有幫助。 – poupou 2012-08-16 12:34:45

回答

1

我會建議:

  • 放置UIImageUIScrollView與縮放設置
  • 修改您UIImageTransform反向,旋轉等

要設置縮放:

yourScroller.MaximumZoomScale = 5; 
yourScroller.MinimumZoomScale = 1; 
yourScroller.ViewForZoomingInScrollView = _ => yourImage; 

旋轉的一個例子是:

yourImage.Transform.Rotate (Math.PI/2)

玩弄它,在UIScrollView應該修改圖像在同一Transform,所以一切都應該協同工作。

0

我不知道我真正明白你的意思,但它聽起來像是你試圖對圖像做多的一個轉換通過設置UIViewtransform財產像這樣(例如):

myView.transform = scale; 
myView.transform = flip; 
myView.transform = rotate; 

然後會發生什麼,只有這些最後一個「被激活:...查看

你應該做的是‘保存/保存’當前的轉型和附加與CGAffineTransformConcat如新:

myView.transform = scale; 
myView.transform = CGAffineTransformConcat(myView.transform, flip); 
myView.transform = CGAffineTransformConcat(myView.transform,rotate); 

請記住,對於一些轉換順序的連接事項!

0

轉換可以通過將它們應用到現有的改造相結合:

CGAffineTransform transform = CGAffineTransformIdentity; 

// Rotate 
if (btnNames == "Rotate R") { 
    Angle = deg + 90; 
    transform = CGAffineTransformRotate(transform, Angle * (CGFloat)Math.PI/180); 
} else { 
    Angle = deg - 90; 
    transform = CGAffineTransformRotate(transform, Angle * (CGFloat)Math.PI/180); 
} 

// Reverse 
transform = CGAffineTransformScale(transform, -1, 1); 

// Flip 
if (!flips) { 
    transform = CGAffineTransformScale(transform, 1, -1); 
} 

// Apply combined transformation 
imgView.transform = transform;