在iPhone手機的主介面中,經常會看到一排小白點,那就是頁面控制項,2.44所示。它是由小白點和滾動視圖組成,可以用來控制翻頁。在滾動滾動視圖時可通過頁面控制項中的小白點來觀察當前頁面的位置,也可通過點擊頁面控制項中的小白點來滾動到指定的頁面。
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屬性,其文法形式如下: