Ios 在UIImageView上执行双重操作时
这一次我在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上组合处理这些操作 当我在放
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;
帮助我们,帮助你。您没有描述您面临的问题(缺少描述),也没有描述您如何尝试实现这些操作(例如代码)。如果他们不必猜测这些信息,答案将更有帮助。帮助我们帮助你。您没有描述您面临的问题(缺少描述),也没有描述您如何尝试实现这些操作(例如代码)。如果他们不必猜测这些信息,答案将更有帮助。