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. Python中的ujson模块

    听说ujson比json模块快了很多,特来一试: # -*- coding: utf-8 -*- import json import ujson import time def cost_time( ...

  2. P2073 送花

    P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...

  3. mybatis+sqlserver中返回非自增主键

    首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around {     private String xccd;  //对应主键      ...

  4. Hive SQL 编译过程

    转自:http://www.open-open.com/lib/view/open1400644430159.html Hive跟Impala貌似都是公司或者研究所常用的系统,前者更稳定点,实现方式是 ...

  5. CS229 笔记02

    CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ ​ $ {\bf {\t ...

  6. IE浏览器如何调试Asp.net的 js代码

    不管我们开发什么项目,都需要使用调试.后端的调试比较简单.前端js调试稍微复杂了一点,但是也别怕,因为我们有很多调试前端js代码的浏览器工具.比如IE浏览器.firefox浏览器.chrome浏览器等 ...

  7. Gitlab & Github

    windwos上Git的使用 软件下载地址:https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git ...

  8. windows安装 Microsoft Visual c++

    第一种方法: 第二种方法: 参考链接 直接给一个2015版本的下载地址 https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/un ...

  9. mysql子查询 exists,not exists,all和any

    (1)实现让结果集A - 结果集B:--利用not exists,合并则可用union . exists,not exists:用于判断且获取结果集A是否存在地结果集B中! ==========结果集 ...

  10. mysql存储表情字符

    windows下是my.inilinux下是my.cnf 路径是: /etc/my.cnf 参考: https://blog.csdn.net/fhzaitian/article/details/53 ...