Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
C# Xamarin ios-如何在UIScrollView中放置大图像_C#_Uiscrollview_Xamarin.ios - Fatal编程技术网

C# Xamarin ios-如何在UIScrollView中放置大图像

C# Xamarin ios-如何在UIScrollView中放置大图像,c#,uiscrollview,xamarin.ios,C#,Uiscrollview,Xamarin.ios,我正在使用用C#实现的Xamarin.iOS。我有一个图像列表。我正在尝试实现一个类似于Facebook或任何其他照片查看应用程序的功能。图像非常大,但我想缩放它们,使它们始终符合scrollview的边界-在本例中,scrollview符合屏幕边界 我的挑战是: 我的图像填满了整个屏幕,但没有正确缩放 缩小时,我希望最小缩放比例返回到原始视图 以下是我目前的代码: public override void ViewDidLoad() { base.ViewDidLoad

我正在使用用C#实现的Xamarin.iOS。我有一个图像列表。我正在尝试实现一个类似于Facebook或任何其他照片查看应用程序的功能。图像非常大,但我想缩放它们,使它们始终符合scrollview的边界-在本例中,scrollview符合屏幕边界

我的挑战是:

  • 我的图像填满了整个屏幕,但没有正确缩放
  • 缩小时,我希望最小缩放比例返回到原始视图
  • 以下是我目前的代码:

    public override void ViewDidLoad()
        {
            base.ViewDidLoad ();
    
            //Setting up the scrollView  
    
            ScrollViewMain.BouncesZoom = false;
            ScrollViewMain.ClipsToBounds = true;
            index = 0;
    
            AddImageInScrollView(index);
    
            btnClose.AddTarget (this, new Selector ("MySelector"), UIControlEvent.TouchDown);
    
            btnPrevious.TouchUpInside += (object sender, EventArgs e) => {
                index--;
                if(index < 0)
                    index = 0;
    
                imageView.RemoveFromSuperview();
                AddImageInScrollView(index);
    
            } ;
    
            btnNext.TouchUpInside += (object sender, EventArgs e) => {
                index++;
                if((nuint)index > Car.allThumbnails.Count-1)
                    index = (int)Car.allThumbnails.Count-1;
    
                imageView.RemoveFromSuperview();
                AddImageInScrollView(index);
    
            } ;
    
    
            var tapGestureRecognizer = new UITapGestureRecognizer (OnDoubleTap);
                tapGestureRecognizer.NumberOfTapsRequired = 2;
    
            ScrollViewMain.AddGestureRecognizer (tapGestureRecognizer);
    }
    
    public void AddImageInScrollView(int index)
        {
    
            //Setting up the imageView
            imageView = new UIImageView(Car.allThumbnails.GetItem<UIImage>((nuint)index));
            imageView.UserInteractionEnabled = true;
            imageView.ContentMode = UIViewContentMode.ScaleAspectFit;
    
    
            //Adding the imageView to the scrollView as subView
            ScrollViewMain.AddSubview(imageView);
    
            ScrollViewMain.DecelerationRate = UIScrollView.DecelerationRateFast;
    
            var scrollViewFrame = ScrollViewMain.Frame;
            var scaleWidth = scrollViewFrame.Size.Width / ScrollViewMain.ContentSize.Width;
            var scaleHeight = scrollViewFrame.Size.Height / ScrollViewMain.ContentSize.Height;
    
            ScrollViewMain.ContentSize = new System.Drawing.SizeF((float)ScrollViewMain.Bounds.Size.Width, (float)ScrollViewMain.Bounds.Size.Height);
    
    
            var minScale = Math.Min(scaleWidth, scaleHeight);
    //Set the zoom properties
            ScrollViewMain.MaximumZoomScale = 3f;
            ScrollViewMain.MinimumZoomScale = (float)minScale;
    
            ScrollViewMain.ViewForZoomingInScrollView += (UIScrollView sv) => {
                return imageView;
    
            };
            ScrollViewMain.ZoomScale = 1.0f;
            ScrollViewMain.ContentMode = UIViewContentMode.ScaleAspectFit;
            imageView.ContentMode = UIViewContentMode.ScaleAspectFit;
            imageView.SizeToFit();
            ScrollViewMain.ContentSize = new System.Drawing.SizeF((float)imageView.Frame.Size.Width, (float)imageView.Frame.Size.Height);
    
    }
    
    public override void ViewDidLoad()
    {
    base.ViewDidLoad();
    //设置滚动视图
    ScrollViewMain.BouncesZoom=false;
    ScrollViewMain.ClipsToBounds=true;
    指数=0;
    AddImagesCrollView(索引);
    btnClose.AddTarget(此,新选择器(“MySelector”),uicontrol事件.触地);
    btnPrevious.TouchUpInside+=(对象发送者,事件参数e)=>{
    索引--;
    如果(指数<0)
    指数=0;
    imageView.RemoveFromSuperview();
    AddImagesCrollView(索引);
    } ;
    btnNext.TouchUpInside+=(对象发送方,事件参数e)=>{
    索引++;
    if((num)index>Car.allThumbnails.Count-1)
    index=(int)Car.allThumbnails.Count-1;
    imageView.RemoveFromSuperview();
    AddImagesCrollView(索引);
    } ;
    var tapGestureRecognizer=新的UITapGestureRecognizer(OnDoubleTap);
    TapGestureRecognitor.NumberOfTapsRequired=2;
    ScrollViewMain.AddGestureRecognizer(点击GestureRecognizer);
    }
    公共void AddImageInScrollView(整数索引)
    {
    //设置imageView
    imageView=newUIImageView(Car.allThumbnails.GetItem((nuint)索引));
    imageView.UserInteractionEnabled=true;
    imageView.ContentMode=UIViewContentMode.ScaleSpectFit;
    //将imageView作为子视图添加到scrollView
    ScrollViewMain.AddSubview(imageView);
    ScrollViewMain.DecelerationRate=UIScrollView.DecelerationRateFast;
    var scrollViewFrame=ScrollViewMain.Frame;
    var scaleWidth=scrollViewFrame.Size.Width/ScrollViewMain.ContentSize.Width;
    var scaleHeight=scrollViewFrame.Size.Height/ScrollViewMain.ContentSize.Height;
    ScrollViewMain.ContentSize=new System.Drawing.SizeF((float)ScrollViewMain.Bounds.Size.Width,(float)ScrollViewMain.Bounds.Size.Height);
    var minScale=Math.Min(标度宽度、标度高度);
    //设置缩放属性
    ScrollViewMain.MaximumZoomScale=3f;
    ScrollViewMain.MinimumZoomScale=(浮点)最小刻度;
    ScrollViewMain.ViewForZoomingInScrollView+=(UIScrollView sv)=>{
    返回图像视图;
    };
    ScrollViewMain.ZoomScale=1.0f;
    ScrollViewMain.ContentMode=UIViewContentMode.ScaleSpectFit;
    imageView.ContentMode=UIViewContentMode.ScaleSpectFit;
    imageView.SizeToFit();
    ScrollViewMain.ContentSize=new System.Drawing.SizeF((float)imageView.Frame.Size.Width,(float)imageView.Frame.Size.Height);
    }
    
    这就是它的样子