在UIImageView上执行双重操作

时间:2012-08-16 12:12:31

标签: ios ipad xamarin.ios

这次我在UIImageView上执行双重操作时遇到问题

1) Zoom+Flip the Image 

2)Zoom + Reverse the Image 

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

所以请帮助找出这个问题的解决方案。在这个用于缩放的情况下,我使用GuestureRecognizer进行滑动+ Revesing +旋转UIImageView我使用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上同时工作

3 个答案:

答案 0 :(得分:1)

我建议:

  • UIImage放入UIScrollView缩放设置
  • 修改UIImage的{​​{1}}以进行反转,旋转等

设置缩放:

Transform

轮换的例子是:

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

使用它,yourImage.Transform.Rotate (Math.PI / 2)应修改图片上相同的UIScrollView,因此一切都应该协同工作。

答案 1 :(得分:0)

我不确定我是否真的明白你的意思,但听起来你试图通过设置UIView的{​​{1}}属性来为图像做更多的转换(例如):

transform

然后会发生的是,只有这些中的最后一个“处于活动状态:在视图上。

你应该做的是“保留/保存”当前的转换并使用myView.transform = scale; myView.transform = flip; myView.transform = rotate; 添加新转换,如:

CGAffineTransformConcat

请记住,对于某些转换,连接顺序很重要!

答案 2 :(得分: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;