文档章节

Xamarin iOS教程之页面控件

大学霸
 大学霸
发布于 2015/06/23 10:40
字数 939
阅读 753
收藏 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人!


© 著作权归作者所有

大学霸
粉丝 279
博文 1011
码字总数 587323
作品 0
东城
程序员
私信 提问
加载中

评论(0)

C#高级编程第11版 - 第三十七章

导航 C# 全版本特性一览 全书目录 第三十七章 Xamarin.Forms 37.1 Xamarin 开发入门 1015 37.1.1 用Android 架构Xamarin 1016 37.1.2 用iOS 架构Xamarin 1016 37.1.3 Xamarin.Forms 1017 37......

青梅酒熟凭卿醉
04/08
0
0
在Visual Studio中使用C#开发iOS & Android应用程序

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

Yamazaki
2013/11/22
454
0
Xamarin.Forms入门学习路线

Xamarin 介绍 Xamarin是一套跨平台解决方案,目的是使用C#语言创造原生的iOS,Android,Mac和Windows应用。 Xamarin的三个优势: Xamarin App拥有原生App的性能,因为最后生成的App中是使用的...

osc_l745c1nv
2018/04/02
6
0
带农历日历的DatePicker控件!Xamarin控件开发小记

闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePicker Mato.DatePicker 说明 这是一个带有农历日历的日期选择Xamarin控件 可以指定初始日期 多选...

osc_srt16prk
2018/07/23
3
0
vs2017开发IOS(vs2017 xamarin 连接mac)

原文:vs2017开发IOS(vs2017 xamarin 连接mac) 这两天突然记起巨软的Visual Studio 2017 好像有说可以用C#开发IOS和Android应用,所以就自己去尝试了下生成过程。 相对与IOS来说,Android的...

osc_tf30cc36
2018/09/10
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Discourse 如何在首页中显示 Box 的子分类

如下图, 如何在 Discourse 中显示子分类。 discourse-sub-col-01 1207×872 147 KB 你可以在分类的设定中进行设置,这个设定需要在上级目录中设置。 discourse-sub-col-02 556×656 76.3 KB...

honeymoose
22分钟前
27
0
OSChina 周六乱弹 —— 妈妈快看,外面有只人类

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《1万年の时を越えて》- 上松範康 手机党少年们想听歌,请使劲儿戳(这里) @火眼...

小小编辑
28分钟前
27
0
git-Linux客户端使用

下载test代码 git pull https://gitee.com/yunmhs/test.git 上传test代码 git add . 将新更新的文件更新至本地git仓库( . 代表当前目录所有 ) git commit -m "Dockerfile Images update huan......

huanke
29分钟前
26
0
静态方法和类方法之间的区别 - Difference between staticmethod and classmethod

问题: 用@staticmethod装饰的函数和用@staticmethod装饰的函数有@staticmethod @classmethod ? 解决方案: 参考一: https://stackoom.com/question/ZP7/静态方法和类方法之间的区别 参考二...

javail
29分钟前
13
0
垃圾收集器与内存分配策略

对象已死? 垃圾标记算法 1.引用计数算法 C++智能指针、Python 2.可达性分析算法 JavaGC Roots的根对象作为起始节点,通过引用链到某个对象不可达时,证明此对象不可能再被使用。 强引用:...

LoSingSang
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部