xamarin学习笔记B05(ios的UIScrollView)

来源:互联网 发布:面对网络舆论你怎么看 编辑:程序博客网 时间:2024/05/18 21:07

(每次学习一点xamarin就做个学习笔记和视频来加深记忆巩固知识)
如有不正确的地方,请帮我指正。

UIScrollView简介
当界面内容很多,一次性显示不了这么多时,可以使用滚动视图控件。

UIScrollView基本使用
A.首先看ContentSize这个属性。
拖一个UIScrollView控件到storyboard,再通过代码添加一个红色的UIView。它们的宽高分别设置如下图:
这里写图片描述

public override void ViewDidLoad()        {            base.ViewDidLoad();            //------------contentSize属性            UIView redView = new UIView();            redView.BackgroundColor = UIColor.Red;            redView.Frame = new CGRect(0, 0, 80, 80);            this.scrollView1.AddSubview(redView);            this.scrollView1.ContentSize = new CGSize(340, 240);            this.scrollView1.ClipsToBounds = false;//设置不截剪,方便看效果        } 

在代码中设置了ContentSize为宽340,高240,那么可滚动范围是这样的,如下图:
这里写图片描述
可以看出,可以向左滚动的距离是scrollView1.ContentSize的宽340减去scrollView1本身的宽度(即Frame)300,结果为40。向上同理。
如果scrollView1.ContentSize的宽和高 <= scrollView1本身的宽度,那么将不可滚动。

B.再看看AlwaysBounceVertical属性。
有时候没有可滚动的东西,但需要下拉显示一个等待的图标,表示正在刷新,这时就可用这个属性。
注释掉前面的代码,写入如下代码:

//------------alwaysBounceVertical属性            //创建一个等待控件            UIActivityIndicatorView indicator1 = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge);            indicator1.Center = new CGPoint(100, -20);            indicator1.StartAnimating();            this.scrollView1.AddSubview(indicator1);            this.scrollView1.AlwaysBounceVertical = true;//只是有个弹簧效果,并没有滚动

下拉可看到等待图标,如下图:
这里写图片描述
C.再看看ContentOffset属性。
注释掉前面的代码,写入如下代码:

//------------contentOffset            UIImage image = UIImage.FromBundle("Tree");            UIImageView imageView1 = new UIImageView(image);            imageView1.Alpha = 0.5F;            this.scrollView1.AddSubview(imageView1);            this.scrollView1.ContentSize = image.Size;            this.scrollView1.ContentOffset = new CGPoint(40, 40);            this.scrollView1.ClipsToBounds = false; 

如果没设置ContentOffset = new CGPoint(40, 40),那么默认是下图这样:
这里写图片描述
如果设置了,则情况如下图:
这里写图片描述

D.再看看ContentInsert属性。
注释掉前面的代码,写入如下代码:

//------------contentInset内边距            UIImage image = UIImage.FromBundle("Tree");            UIImageView imageView1 = new UIImageView(image);            imageView1.Alpha = 0.5F;            this.scrollView1.AddSubview(imageView1);            this.scrollView1.ContentInset = new UIEdgeInsets(10, 10, 10, 10);            this.scrollView1.ClipsToBounds = false;            this.scrollView1.ContentSize = image.Size; 

设置上左下右这四边的内边距为10,运行结果如下图:
这里写图片描述

E.ScrollView的一些事件

//------------监听UIScrollView事件            UIImage image = UIImage.FromBundle("Tree");            UIImageView imageView1 = new UIImageView(image);            this.scrollView1.AddSubview(imageView1);            this.scrollView1.ClipsToBounds = true;//记得设置栽剪为是,才可以缩放            this.scrollView1.ContentSize = image.Size;            this.scrollView1.MaximumZoomScale = 2.0F;//最大缩放比例为2this.scrollView1.MinimumZoomScale = 0.3F;//最小缩放比例为0.3            //返回要缩放的控件            this.scrollView1.ViewForZoomingInScrollView += (UIScrollView scrollView) =>            {                return imageView1;            };            //缩放时会不断调用此方法            this.scrollView1.DidZoom += (sender, e) =>            {                //Console.WriteLine("scrollView1.DidZoom()");            };            //滚动时会不断调用此方法            this.scrollView1.Scrolled += (sender, e) =>            {                //Console.WriteLine("Scrolled()");            };            //拖动开始时被调用            this.scrollView1.DraggingStarted += (sender, e) =>            {                Console.WriteLine("scrollView1.DraggingStarted()");            };            //拖动完毕之前被调用            this.scrollView1.WillEndDragging += (sender, e) =>            {                Console.WriteLine("scrollView1.WillEndDragging()");            };            //拖动完毕后被调用            this.scrollView1.DraggingEnded += (sender, e) =>            {                Console.WriteLine("scrollView1.DraggingEnded()");            };            //减速完毕后被调用            this.scrollView1.DecelerationEnded += (sender, e) =>            {                Console.WriteLine("scrollView1.DecelerationEnded()");            }; 

代码和视频在我上传的CSDN资源中http://download.csdn.net/download/junshangshui/10151239

原创粉丝点击