文档章节

Xamarin iOS教程之页面控件

大学霸
 大学霸
发布于 2015/06/23 10:40
字数 939
阅读 359
收藏 1

Xamarin iOS教程之页面控件

Xamarin iOS 页面控件

iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示。它是由小白点和滚动视图组成,可以用来控制翻页。在滚动滚动视图时可通过页面控件中的小白点来观察当前页面的位置,也可通过点击页面控件中的小白点来滚动到指定的页面。

2.44  页面控件

在此图中,小白点对应的当前页被高亮显示。此控件指示内容分为两个页面。

【示例2-26】以下将使用页面视图来控制图像的显示。具体步骤如下:

1创建一个Single View Application类型的工程,命名为2-11

2添加图像1.jpg2.jpg3.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;                    //获取图像视图对象page1x位置

  •                             float x2 = this.page2.Frame.X;                    //获取图像视图对象page2x位置

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


© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 255
博文 866
码字总数 541907
作品 0
东城
程序员
在Visual Studio中使用C#开发iOS & Android应用程序

Xamarin与微软合作,使开发人员可以在Visual Studio中构建iOS和Android应用程序。Xamarin大学教开发人员如何做。 Xamarin已于11月13日宣布与微软合作,为使用C#和Visual Studio构建完全原生的...

Yamazaki
2013/11/22
0
0
TeeChart .NET for iOS图表开发入门教程

去年,TeeChart 为iOS图表开发专门发布了TeeChart NET for iOS(包含在TeeChart Mobile中,TeeChart8.5折进行中),相信很多人都对其感兴趣。慧都为大家制作了TeeChart NET for iOS的入门教程...

裸奔的火腿肠
2014/02/25
0
0
Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序。自从Xamarin问世后,C#的作用就发生了很大的变化。它不仅可以编写关于Windows...

大学霸
2014/10/23
0
0
Xamarin Anroid开发教程之Anroid开发工具及应用介绍

Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热。但是在Android平台下只能使用J...

大学霸
2015/05/13
0
0
Aspose.Words for iOS 全新上线 | 支持免费试用

Aspose.Words for iOS via Xamarin 可以与Xamarin.iOS平台集成,可以开发具有创建,操作,转换或渲染最常用的Word处理文档格式的本地iOS应用程序。 主要功能 互换文档格式 通过邮件合并生成报...

可乐瓶的小辣椒
2017/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
17分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
26分钟前
1
0
RDBMS 关系型数据库与 NoSQL 全面比较

随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 低延迟的读写速度:应用快速地反应能极大地提升用户的满...

PeakFang-BOK
35分钟前
1
0
徒弟做了一个Python的实战小项目——银行系统

国际惯例:实践是检验真理的唯一标准。 众所周知,在编程过程中理论知识再充实也需要通过项目的炼金石。下面给大家看一下我徒弟做的一个小项目实战要求,是做一个银行系统,就是我们去银行办...

无也Python
41分钟前
2
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部