由于iPhone或iPad屏幕边界的影响,使我们添加的控件和界面元素受到限制。但是在iPhone或iPad开发中,人们使用滚动视图解决了这一受到限制的问题。滚动视图由UIScrollView类的一个实例对象实现。
【示例2-20】 以下的代码就使用滚动视图来显示一个比屏幕还要大的图像。具体步骤如下:
(1)创建一个Single View Application类型的工程。
(2)添加图像1.jpg到创建工程的Resources文件夹中。
(3)打开2-10ViewController.cs文件,编写代码,实现通过滚动视图来观看一个比屏幕还要大的图像。代码如下:
using System; using System.Drawing; using MonoTouch.Foundation; using MonoTouch.UIKit; namespace Application { public partial class __10ViewController : UIViewController { UIImageView imgView; UIScrollView scrollView; …… //这里省略了视图控制器的构造方法和析构方法 #region View lifecycle public override void ViewDidLoad () { base.ViewDidLoad (); // Perform any additional setup after loading the view, typically from a nib. imgView = new UIImageView (UIImage.FromFile ("1.jpg")); //为主视图添加滚动视图对象 scrollView = new UIScrollView (); scrollView.Frame=new RectangleF(0,0,320,568) ; scrollView.ContentSize = imgView.Image.Size; //滚动范围的大小 scrollView.ContentOffset = new PointF (200f, 50f); //目前滚动的位置 scrollView.PagingEnabled = true; //可以整页翻动 scrollView.MinimumZoomScale = 0.25f; //缩小的最小比例 scrollView.MaximumZoomScale = 2f; //放大的最大比例 //获取要缩放的图像视图 scrollView.ViewForZoomingInScrollView = delegate(UIScrollView scroll) { return this.imgView; } ; scrollView.ZoomScale = 1f; //设置变化比例 scrollView.IndicatorStyle = UIScrollViewIndicatorStyle.Black; //滚动指示器的风格设置 scrollView.AddSubview (imgView); this.View.AddSubview (scrollView); } …… //这里省略了视图加载和卸载前后的一些方法 #endregion } }
运行结果如图2.38所示。
在滚动视图中需要注意以下两点。
(1)常用属性
滚动视图的属性有很多,表2-13总结了滚动视图常用的一些属性。
(2)滚动视图常用事件
在滚动视图中一般会使用到一些事件。这里将常用到的一些事件做了总结,如表2-14所示。
【示例2-21】 以下将实现滚动视图的滚动,并为滚动视图添加了事件。代码如下:
using System; using System.Drawing; using MonoTouch.Foundation; using MonoTouch.UIKit; namespace Application { public partial class __30ViewController : UIViewController { …… //这里省略了视图控制器的构造方法和析构方法 #region View lifecycle public override void ViewDidLoad () { base.ViewDidLoad (); // Perform any additional setup after loading the view, typically from a nib. UIScrollView scrollView = new UIScrollView (); scrollView.Frame = new RectangleF (0, 0, 320, 568); scrollView.ContentSize = new SizeF (320, 2000); this.View.AddSubview (scrollView); //滚动视图开始滚动时调用 scrollView.Scrolled += delegate { Console.WriteLine ("开始滚动..."); } ; //滚动视图结束滚动时调用 scrollView.DecelerationEnded += delegate { Console.WriteLine ("滚动结束..."); }; float y = 10; //为滚动视图对象添加标签对象 for (float i = 1; i < 21; i++) { UILabel label = new UILabel (); label.Frame = new RectangleF (0, y, 320, 50); label.BackgroundColor = UIColor.Cyan; label.Text = String.Format ("{0}", i); scrollView.AddSubview (label); y += 100; } } …… //这里省略了视图加载和卸载前后的一些方法 #endregion } }
运行效果如图2.39所示。