在iPhone手機的主界面中,常常會看到一排小白點,那就是頁面控件,如圖2.44所示。它是由小白點和滾動視圖組成,能夠用來控制翻頁。在滾動滾動視圖時可經過頁面控件中的小白點來觀察當前頁面的位置,也可經過點擊頁面控件中的小白點來滾動到指定的頁面。ide
圖2.44 頁面控件this
在此圖中,小白點對應的當前頁被高亮顯示。此控件指示內容分爲兩個頁面。spa
【示例2-26】如下將使用頁面視圖來控制圖像的顯示。具體步驟以下:orm
(1)建立一個Single View Application類型的工程,命名爲2-11。對象
(2)添加圖像1.jpg、2.jpg、3.jpg到建立工程的Resources文件夾中。教程
(3)打開2-11ViewController.cs文件,編寫代碼,實如今使用滾動視圖來控件圖像的顯示。代碼以下:事件
using System;開發
using System.Drawing;it
using MonoTouch.Foundation;io
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人!