Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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_Ipad_Xamarin.ios - Fatal编程技术网

Ios 在UIImageView上执行双重操作时

Ios 在UIImageView上执行双重操作时,ios,ipad,xamarin.ios,Ios,Ipad,Xamarin.ios,这一次我在UIImageView上执行双重操作时遇到了问题 1) Zoom+Flip the Image 2)Zoom + Reverse the Image 3)Zoom + Flip or Reverse + Rotate(+- 90)deg 因此,请帮助找出这个问题的解决方案。在这种情况下,对于缩放,我使用GuestureRecognitor进行翻转+翻转+旋转UIImageView,我使用UIButton进行这些操作,因此如何在UIImageView上组合处理这些操作 当我在放

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

1) Zoom+Flip the Image 

2)Zoom + Reverse the Image 

3)Zoom + Flip or Reverse + Rotate(+- 90)deg
因此,请帮助找出这个问题的解决方案。在这种情况下,对于缩放,我使用GuestureRecognitor进行翻转+翻转+旋转UIImageView,我使用UIButton进行这些操作,因此如何在UIImageView上组合处理这些操作

当我在放大或缩小图像的同时旋转(+-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; 
============ 用于翻转

我实现的这段代码可以很好地执行操作。但我想同时处理UIImage

我建议:

  • 使用缩放设置将
    ui图像
    放置在
    UIScrollView
  • 修改
    ui图像
    变换
    进行反转、旋转等操作
要设置缩放,请执行以下操作:

yourScroller.MaximumZoomScale = 5;
yourScroller.MinimumZoomScale = 1;
yourScroller.ViewForZoomingInScrollView = _ => yourImage;
旋转的一个例子是:

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

使用它时,
UIScrollView
应该修改图像上相同的
变换
,因此所有内容都应该同步工作。

我建议:

  • 使用缩放设置将
    ui图像
    放置在
    UIScrollView
  • 修改
    ui图像
    变换
    进行反转、旋转等操作
要设置缩放,请执行以下操作:

yourScroller.MaximumZoomScale = 5;
yourScroller.MinimumZoomScale = 1;
yourScroller.ViewForZoomingInScrollView = _ => yourImage;
旋转的一个例子是:

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


玩转它,UIScrollView应该修改图像上相同的变换,这样一切都应该同步进行。

我不确定我是否真的理解你的意思,但是,通过如下设置
UIView
transform
属性,您似乎试图对图像进行更多的一对一转换(示例):

然后发生的情况是,只有最后一个“活动:在视图上”

您应该做的是“保留/保存”当前转换,并在新转换后附加
cGraffinetTransformConcat
如下:

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

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

我不确定我是否真正理解您的意思,但听起来您试图通过如下设置
UIView
transform
属性来对图像进行更多的一次转换(示例):

然后发生的情况是,只有最后一个“活动:在视图上”

您应该做的是“保留/保存”当前转换,并在新转换后附加
cGraffinetTransformConcat
如下:

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

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

可以通过将转换应用于现有转换来组合转换:

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;

可以通过将转换应用于现有转换来组合转换:

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;

帮助我们,帮助你。您没有描述您面临的问题(缺少描述),也没有描述您如何尝试实现这些操作(例如代码)。如果他们不必猜测这些信息,答案将更有帮助。帮助我们帮助你。您没有描述您面临的问题(缺少描述),也没有描述您如何尝试实现这些操作(例如代码)。如果他们不必猜测这些信息,答案将更有帮助。