购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.8 滚动视图

由于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所示。

图2.38 运行效果

在滚动视图中需要注意以下两点。

(1)常用属性

滚动视图的属性有很多,表2-13总结了滚动视图常用的一些属性。

表2-13 滚动视图的属性

(2)滚动视图常用事件

在滚动视图中一般会使用到一些事件。这里将常用到的一些事件做了总结,如表2-14所示。

表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所示。

图2.39 运行效果 03RqHHzmiKv/MDIPfr4teaRU+76Olcckws4hc6VmQLLoz5YjkTSPJy9HDnuV/pDa

点击中间区域
呼出菜单
上一章
目录
下一章
×