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人!

时间: 2024-08-02 02:11:38

Xamarin iOS教程之页面控件的相关文章

Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添加到页面中,然后在ResourceDictionary中实现模板的构建即可,其语法形式如下: <Page> <Page.Resources> <ResourceDictionary> <ControlTemplate x:Key="KeyName"

Xamarin XAML语言教程构建ControlTemplate控件模板

Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的.ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面.本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容. 构建控件模板 控件模板可以在应用程序级别中构建,也可以在页面级别中构建.以下将对这两个构建方式

Xamarin iOS教程之进度条和滚动视图

Xamarin iOS教程之进度条和滚动视图 Xamarin iOS 进度条 进度条可以看到每一项任务现在的状态.例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少.QQ音乐播放器中也使用到了进度条,它可以让用户看到当前音乐播放了多少,还剩多少等.在Xamarin.iOS中也提供实现进度条的类,即UIProgressView. [示例2-23]以下将实现进度条加载的效果.具体步骤如下: (1)创建一个Single View Application类型的工程,命名为

Xamarin iOS教程之使用按钮接接收用户输入

Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击.而点击操作最多的控件往往是按钮控件.一般使用UIButton类来实现按钮.本节将主要讲解按钮相关的内容. Xamarin iOS使用代码添加按钮 由于按钮拖放的方式比较简单,所以不再介绍.这里直接讲解代码中如何添加按钮.使用代码为主视图添加一个按钮的方式和在2.2.2节中讲解的步骤是一样的.首先需要

利用foreach对页面控件的遍历 及三目运算符的使用

1.利用foreach对页面控件的遍历 及三目运算符的使用 利用div将一组CheckBox放在一起用于遍历 <body> <form id="form1" runat="server"> <div> <asp:CheckBox ID="cb_1" runat="server" AutoPostBack="true" Text="我是自动的" o

unity3d插件Daikon Forge GUI 中文教程-2-基础控件Label的使用

(游戏蛮牛首发)大家好我是孙广东.官网提供了专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,不过是在youtube上,要观看是需要翻墙的. 不过教程还是文本更好一些,便于观看查找. 我们先来设置 UI Root 中的如下:屏幕大小为1024*768 2.1  新建一个Label 控件 先来看看Control Properties (基本上是所有控件都共用的)的以后不再介绍,参数: 其中要设置好Layout 和 Anchor 我们就要完全的理解

《zw版&#183;Halcon-delphi系列原创教程》halconxlib控件列表

<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件,      不过最重要的控件,只有两个,THImagex.THOperatorSetX控件. THImagex控件效率极高,可以视为内部数据交换模式,但与标准的Halcon函数有所差异,建议有经验的用户使用.        THOperatorSetX控件,采用类似仿真的模式,向Halcon模块提供脚本指令,由Halcon系统处理后,生成结果数据,再

IOS开发自定义CheckBox控件

IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #import "Common.h" @interface UICheckBoxButton : UIControl { UILabel *label; UIImageView *icon; BOOL checked; id delegate; } @property (retain, nonat

[IOS_UI控件] IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton.UISlider.UISwitch.UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到更多的东西. 上图中包涵提到的4种控件,UIButton按钮.UISlider滑块.UISwitch开关.UISegmentedControl分类 首先创建一个名为CodeControls的Empty Application项目 AppDelegate.h和AppDelegate.m文件中和IOS代