Xamarin iOS教程之頁面控件 – iPhone手機開發 iPhone軟體開發教學課程

Xamarin iOS教程之頁面控件

Xamarin iOS 頁面控件

在iPhone手機的主界面中,經常會看到一排小白點,那就是頁面控件,如圖2.44所示。它是由小白點和滾動視圖組成,可以用來控制翻頁。在滾動滾動視圖時可通過頁面控件中的小白點來觀察當前頁面的位置,也可通過點擊頁面控件中的小白點來滾動到指定的頁面。

圖2.44 頁面控件

在此圖中,小白點對應的當前頁被高亮顯示。此控件指示內容分為兩個頁面。

【示例2-26】以下將使用頁面視圖來控制圖像的顯示。具體步驟如下:

(1創建一個Single View Application類型的工程,命名為2-11。

(2添加圖像1.jpg、2.jpg、3.jpg到創建工程的Resources文件夾中。

(3打開2-11ViewController.cs文件,編寫代碼,實現在使用滾動視圖來控件圖像的顯示。代碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  • public partial class __11ViewController : UIViewController

  • {

  • UIImageView page1;

  • UIImageView page2;

  • UIImageView page3;

  • UIScrollView scrollView;

  • UIPageControl pageControl;

  • …… //這裡省略瞭視圖控制器的構造方法和析構方法

  • #region View lifecycle

  • public override void ViewDidLoad ()

  • {

  • base.ViewDidLoad ();

  •  

  • // Perform any additional setup after loading the view, typically from a nib.

  • //添加滾動視圖對象scrollView

  • scrollView = new UIScrollView ();

  • scrollView.Frame = new RectangleF (0, 0, 320, 495);

  • //滾動視圖結束滾動時所調用的方法

  • scrollView.DecelerationEnded += this.scrollView_DecelerationEnded;

  • //添加頁面

  • pageControl = new UIPageControl ();

  • pageControl.Frame = new RectangleF (0, 540, 320, 37);

  • pageControl.Pages = 3; //設置頁面控件的頁數,即小白點

  • //當頁面控件的數值發生改變時調用

  • pageControl.ValueChanged += this.pageControl_ValueChanged;

  • //滾動視圖的滾動事件

  • scrollView.Scrolled += delegate {

  • Console.WriteLine ("Scrolled!");

  • } ;

  • scrollView.PagingEnabled = true;

  • RectangleF pageFrame = scrollView.Frame;

  • scrollView.ContentSize = new SizeF (pageFrame.Width * 3, pageFrame.Height);

  • //添加圖像視圖對象page1

  • page1 = new UIImageView (pageFrame);

  • page1.ContentMode = UIViewContentMode.ScaleAspectFit;

  • page1.Image = UIImage.FromFile ("1.jpg");

  • pageFrame.X += this.scrollView.Frame.Width;

  • //添加圖像視圖對象page2

  • page2 = new UIImageView (pageFrame);

  • page2.ContentMode = UIViewContentMode.ScaleAspectFit;

  • page2.Image = UIImage.FromFile ("2.jpg");

  • pageFrame.X += this.scrollView.Frame.Width;

  • //添加圖像視圖對象page3

  • page3 = new UIImageView (pageFrame);

  • page3.ContentMode = UIViewContentMode.ScaleAspectFit;

  • page3.Image = UIImage.FromFile ("3.jpg");

  • scrollView.AddSubview (page1);

  • scrollView.AddSubview (page2);

  • scrollView.AddSubview (page3);

  • this.View.AddSubview (scrollView);

  • this.View.AddSubview (pageControl);

  • }

  •  

  • private void scrollView_DecelerationEnded (object sender, EventArgs e)

  • {

  • float x1 = this.page1.Frame.X; //獲取圖像視圖對象page1的x位置

  • float x2 = this.page2.Frame.X; //獲取圖像視圖對象page2的x位置

  • float x = this.scrollView.ContentOffset.X; //獲取滾動視圖對象scrollView目前滾動的x位置

  • //判斷x是否和x1相等

  • if (x == x1)

  • {

  • this.pageControl.CurrentPage = 0; //設置頁面控件當前的頁

  • } else if (x == x2) //判斷x是否和x2相等

  • {

  • this.pageControl.CurrentPage = 1;

  • } else

  • {

  • this.pageControl.CurrentPage = 2;

  • }

  • }

  •  

  • private void pageControl_ValueChanged (object sender, EventArgs e)

  • {

  • PointF contentOffset = this.scrollView.ContentOffset;

  • //使用switch語句判斷當前的頁數

  • switch (this.pageControl.CurrentPage)

  • {

  • case 0:

  • contentOffset.X = this.page1.Frame.X;

  • this.scrollView.SetContentOffset (contentOffset, true); //設置滾動視圖目前滾動的位置

  • break;

  • case 1:

  • contentOffset.X = this.page2.Frame.X;

  • this.scrollView.SetContentOffset (contentOffset, true);

  • break;

  • case 2:

  • contentOffset.X = this.page3.Frame.X;

  • this.scrollView.SetContentOffset (contentOffset, true);

  • break;

  • default:

  • break;

  • }

  • }

  • …… //這裡省略瞭視圖加載和卸載前後的一些方法

  • #endregion

  • }

  • }

    運行效果如圖2.45所示。

    圖2.45 運行效果

    在頁面控件中,需要開發者需要註意以下2個問題:

    1.頁面控件的屬性設置

    頁面控件屬性設置並不多,一般就是設置頁數以及當前頁。設置頁面控件的頁數,需要使用Pages屬性,其語法形式如下:

    • 頁面控件對象.Pages=頁數;

      其中,頁數是一個整型數據。設置頁面控件的當前頁,需要使用CurrentPage屬性,其語法形式如下:

      • 頁面控件對象.CurrentPage=當前頁;

        其中,當前頁是一個整型數據。

        2.頁面控件的響應

        頁面控件的響應需要使用ValueChanged事件實現。示例2-26中的代碼如下:

        • pageControl.ValueChanged += this.pageControl_ValueChanged;

          本文選自:Xamarin iOS開發實戰大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

          ?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *