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

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

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

    Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...

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

    Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...

  3. Xamarin XAML语言教程构建ControlTemplate控件模板 (三)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...

  4. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...

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

    Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击. ...

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

    Xamarin iOS教程之进度条和滚动视图 Xamarin iOS 进度条 进度条可以看到每一项任务现在的状态.例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少.Q ...

  7. 最详细在Windows安装Xamarin.iOS教程

    最详细在Windows安装Xamarin.iOS教程 来源:http://www.cnblogs.com/llyfe2006/articles/3098280.html 本文展示了如何设立Xamari ...

  8. 如何获取Iframe的页面控件的值

    有时候我们在页面需要使用iframe的方法来引用另一个页面,虽然个人建议不要使用iframe哈,但是有些时候是没得法了才使用的咯,那么在使用的过程中也会遇到某一些问题,我将自己遇到的问题记录下来方便以 ...

  9. 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表

    <zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件,      不过最重要的控件,只有两个,T ...

随机推荐

  1. P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下的人找到区间[l,r]储物点的所有东西,清点完 ...

  2. bzoj千题计划104:bzoj1013: [JSOI2008]球形空间产生器sphere

    http://www.lydsy.com/JudgeOnline/problem.php?id=1013 设球心(x1,x2,x3……) 已知点的坐标为t[i][j] 那么 对于每个i满足 Σ (t[ ...

  3. javascript数组赋值操作

    最近在司徒正美的<javascript框架设计>,在里面发现了一个段代码 ...... var _len = arr1.length; while (_len) { arr2[--_len ...

  4. waven 常用构建命令

    常用命令 mvn compile : 编译maven项目 mvn test : 运行项目测试用例 mvn package : 将项目打成jar包 mvn clean : 删除target目录下生成的文 ...

  5. Django中合并同一个model的多个QuerySet

    [1]相同modelarticles1 = Article.objects.order_by("autoid").filter(autoid__lt = 16).values('a ...

  6. 第12月第26天 swift 下划线

    1. The _ is used to define that the parameter is not named If you have multiple _ it states that you ...

  7. Hive笔记之宏(macro)

    一.啥是宏 宏可以看做是一个简短的函数,或者是对一个表达式取别名,同时可以将这个表达式中的一些值做成变量调用时传入,比较适合于做分析时为一些临时需要用到很多次的表达式操作封装一下取个简短点的别名来调用 ...

  8. 【源码阅读】Mimikatz一键获取远程终端凭据与获取明文密码修改方法

    1.前言 mimikatz框架是非常精妙的,粗浅讲一下修改的思路. 它的模块主要由各个结构体数组组成,根据传入的命令搜索执行相应命令的模块 mimikatz.c 部分代码: NTSTATUS mimi ...

  9. 常用SQL函数(字符串分隔转表、自增长转编号)

    字符串分隔转表 -- ============================================= -- Author: -- Create date: -- Description: ...

  10. html可用于跨域的三个标签

    img 应用场景: <img>用于打点统计,统计网站可能是其他域 script 应用场景: 可以用于cdn,还可以用于JSONP link 可用于cdn