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人!
Xamarin iOS教程之页面控件的更多相关文章
- Xamarin XAML语言教程构建ControlTemplate控件模板 (四)
Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板
Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (三)
Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (二)
Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...
- Xamarin iOS教程之使用按钮接接收用户输入
Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击. ...
- Xamarin iOS教程之进度条和滚动视图
Xamarin iOS教程之进度条和滚动视图 Xamarin iOS 进度条 进度条可以看到每一项任务现在的状态.例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少.Q ...
- 最详细在Windows安装Xamarin.iOS教程
最详细在Windows安装Xamarin.iOS教程 来源:http://www.cnblogs.com/llyfe2006/articles/3098280.html 本文展示了如何设立Xamari ...
- 如何获取Iframe的页面控件的值
有时候我们在页面需要使用iframe的方法来引用另一个页面,虽然个人建议不要使用iframe哈,但是有些时候是没得法了才使用的咯,那么在使用的过程中也会遇到某一些问题,我将自己遇到的问题记录下来方便以 ...
- 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件, 不过最重要的控件,只有两个,T ...
随机推荐
- Swift学习笔记1
1.Swift 的String类型是值类型. 如果您创建了一个新的字符串,那么当其进行常量.变量赋值操作,或在函数/方法中传递时,会进行值拷贝. 任何情况下,都会对已有字符串值创建新副本,并对该新副本 ...
- Linux(Debian)软件安装
# 配置/etc/apt/sources.list 通过root权限修改/etc/apt/sources.list $ su #输入密码进入root权限 $ chmod 0666 /etc/apt/s ...
- javascritpt创建对象
javascript添加对象示例: <script> person=new Object(); person.firstname="Bill"; person.last ...
- 第5月第24天 线性变换 opengl
1. http://news.qiyeku.com/news_837979.html 2. opengl + (Class)layerClass { return [CAEAGLLayer class ...
- json 删除、添加对象
1. 定义json对象 var entryJson = []; 2. 删除.添加对象 entryJson.pop(); //删除最后一个对象 entryJson.push({ //往 ...
- USB协通讯议--深入理解【转】
转自:http://blog.csdn.net/myarrow/article/details/8484113 0. 基本概念 一个[传输](控制.批量.中断.等时):由多个[事务]组成: 一个[事务 ...
- contos 7创建阿里云镜像源
今天在ESC上安装mariaDB,发现centOS 7默认的yum源上的mariaDB版本过低,然后又镜像到网易上,发现网易源上没有mariaDB,几经折腾才发现阿里镜像上mariaDB版本较新.更改 ...
- 内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别
内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态 内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数 ...
- Django Rest Framework-APIView源码分析
class APIView(View): # The following policies may be set at either globally, or per-view. renderer_c ...
- IntelliJ IDEA 中安装junit插件
1.在Intellij IDEA 中安装了 Junit,TestNG插件,首先检查一下intellij IDEA 是否在安装时默认安装了这两个插件,检查方法 打开 settings -->Plu ...