Xamarin iOS教程之頁面控制項

來源:互聯網
上載者:User

Xamarin iOS教程之頁面控制項
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人!

          ?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.