C# 滚动视图缩放:图像平移未按预期工作

C# 滚动视图缩放:图像平移未按预期工作,c#,ios,xamarin,xamarin.ios,C#,Ios,Xamarin,Xamarin.ios,我正在更新旧服务的图像兼容性,但遇到了一个问题 几个月前,我研究了如何缩放和平移图像。我在Xamarin官方网站()上找到了这样做的方法。这在当时效果很好,但现在没有达到预期效果 下面是我正在运行的代码片段: 修改图像的大小,使其宽度始终等于screenwidth,并使用screenwidth修改高度,以保留图像的外观 var width = image.Size.Width; var height = image.Size.Height; var newWidth = (GlobalSuppo

我正在更新旧服务的图像兼容性,但遇到了一个问题

几个月前,我研究了如何缩放和平移图像。我在Xamarin官方网站()上找到了这样做的方法。这在当时效果很好,但现在没有达到预期效果

下面是我正在运行的代码片段:

修改图像的大小,使其宽度始终等于screenwidth,并使用screenwidth修改高度,以保留图像的外观

var width = image.Size.Width;
var height = image.Size.Height;
var newWidth = (GlobalSupport.ScreenWidth - 30);
var newHeight = height * newWidth / width;

UIGraphics.BeginImageContext(new SizeF(newWidth, newHeight));
image.Draw(new RectangleF(0, 0, newWidth, newHeight));
image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
创建imageView,将图像添加到其中,并设置scrollview及其缩放

imageView = new UIImageView(
    new RectangleF((screenWidth - image.Size.Width) / 2, 
                   0, image.Size.Width, image.Size.Height));

imageView.Image = image;

scrollView = new UIScrollView(this.View.Bounds);
scrollView.MaximumZoomScale = 4f;
scrollView.MinimumZoomScale = 1f;
scrollView.ViewForZoomingInScrollView += (UIScrollView sv) =>
{
    scrollView.ContentSize = new SizeF(imageView.Frame.Width, imageView.Frame.Height);
    return imageView;
};

this.View.AddSubview(scrollView);

scrollView.AddSubview(imageView);
我能够很好地缩放图像,
UIImageView
的宽度和高度得到了很好的修改。scrollview的contentSize也会更新,但当缩放时,我只能平移到图像的某个宽度,而不能平移到整个宽度。我也吃不下。不过我可以平移到最左上方

有人知道这可能是什么吗

图像:

图像放大了:


图像平移:

哦,我已经找到了解决方案。显然,用于父scrollView的View.Bounds是错误的。scrollview的宽度几乎是实际屏幕大小的2倍,因此平移不起作用(因为scrollview的宽度比实际屏幕大小宽)

通过如下修改scrollView的初始化,解决了此问题:

scrollView = new UIScrollView(new RectangleF(0, 0, GlobalSupport.ScreenWidth, GlobalSupport.ScreenHeight));