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 ...
随机推荐
- linux c 编程 ------ 获取时间,计算程序执行时间
#include <time.h> #include <stdio.h> #include <unistd.h> int main(int argc, char a ...
- C#生成和识别二维码
用到外部一个DLL文件(ThoughtWorks.QRCode.dll),看效果 生成截图 识别截图 生成二维码后右键菜单可以保存二维码图片,然后可以到识别模式下进行识别,当然生成后可以用手机扫描识别 ...
- Java技术体系总结
PC前端:Javascript.JQuery.Angularjs.Reactjs.TypeScript 移动前端:Vue.js.Zepto WebJars spring:spring mvc.spri ...
- Red Pen - 快速高效的获取设计项目的反馈
Red Pen 让设计师能够快速,高效的从你的同事和客户获取反馈.只需要简单的拖放图像到 Red Pen 主页,然后把生成的链接分享给你的同事或者客户.他们打开链接就能看到设计稿,并给予实时的反馈,所 ...
- [转载]Juicer – 一个Javascript模板引擎的实现和优化
http://ued.taobao.org/blog/2012/04/juicer-%E4%B8%80%E4%B8%AAjavascript%E6%A8%A1%E6%9D%BF%E5%BC%95%E6 ...
- P4549 【模板】裴蜀定理
题目描述 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1X1+...AnXn>0,且S的值最小 输入输出格式 输入格式: 第一行给出数字N,代表有N个数 下面一行给出 ...
- ASP.NET程序发布
详细流程请参考文章:https://www.cnblogs.com/wangjiming/p/6286045.html 主要补充个人操作过程中遇到的问题: 1)网站发布完成后,站点下没有aspnet_ ...
- Mini Twitter
Implement a simple twitter. Support the following method: postTweet(user_id, tweet_text). Post a twe ...
- RESET MASTER和RESET SLAVE使用场景和说明【转】
[前言]在配置主从的时候经常会用到这两个语句,刚开始的时候还不清楚这两个语句的使用特性和使用场景. 经过测试整理了以下文档,希望能对大家有所帮助: [一]RESET MASTER参数 功能说明:删除所 ...
- grep和sed匹配多个字符关键字的用法
GNU sed和UNIX sed 写法不一样 匹配多个关键词,打印出匹配的行,效果类似于 grep grep hello\|world file > output 或者用扩展正则 grep -E ...