文档章节

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

大学霸
 大学霸
发布于 2015/06/19 17:10
字数 1445
阅读 208
收藏 2
点赞 0
评论 0

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

Xamarin iOS 进度条

进度条可以看到每一项任务现在的状态。例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少。QQ音乐播放器中也使用到了进度条,它可以让用户看到当前音乐播放了多少,还剩多少等。在Xamarin.iOS中也提供实现进度条的类,即UIProgressView

【示例2-23】以下将实现进度条加载的效果。具体步骤如下:

1创建一个Single View Application类型的工程,命名为2-9

2打开MainStoryboard.storyboard文件,对主视图进行设置。效果如图2.40所示。

2.40  主视图的效果

需要添加的视图以及设置如表2-12所示。

2-12  设置视图

3打开2-9ViewController.cs文件,编写代码,实现进度条的加载。代码如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • using System.Threading;

  • using System.Threading.Tasks;

  • namespace Application

  • {

  •          public partial class __9ViewController : UIViewController

  •          {

  •                    UIProgressView progressView;

  •                    float incrementBy = 0f;

  •                    ……                                                                   //这里省略了视图控制器的构造方法和析构方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •               //触摸按钮后执行的动作

  •                             buttonStartProgress.TouchUpInside += delegate {

  •                                                buttonStartProgress.Enabled = false;

  •                                                progressView.Progress = 0f;

  •                                                Task.Factory.StartNew(this.StartProgress);                    //创建一个新的任务

  •                             } ;

  •               //为主视图添加进度条对象

  •                             progressView = new UIProgressView (new RectangleF (60f, 200f, 200f, 50f));

  •                             progressView.Progress = 0f;                                                 //设置进度条的进度

  •                             incrementBy = 1f / 10f;                                                             //设置进度条进度的增量值

  •                             this.View.AddSubview(progressView);

  •                    }

  •          //进度条开始加载

  •                    public void StartProgress ()

  •                    {

  •                             float currentProgress = 0f;

  •               //判断currentProgress是否小于1,如果是执行进度条进度的加载

  •                             while (currentProgress < 1f)

  •                             {

  •                                      Thread.Sleep(1000);                                                        //1000毫秒后暂停当前线程

  •                                      this.InvokeOnMainThread(delegate {

  •                                                progressView.Progress += this.incrementBy;

  •                                                currentProgress = this.progressView.Progress;

  •                                                labelStatus.Text=string.Format("Current value: {0}",

  • Math.Round(progressView.Progress,2));

  •                         //判断进度条的当前进度是否为1

  •                                                if (currentProgress >= 1f)

  •                                                {

  •                                                         labelStatus.Text = "Progress completed!";

  •                                                         buttonStartProgress.Enabled = true;

  •                                                }

  •                                      } );

  •                             }

  •                    }

  •               ……                                                                  //这里省略了视图加载和卸载前后的一些方法

  •                    #endregion

  •          }

  • }

运行效果如图2.41所示。

2.41  运行效果

在此程序中,开发者需要注意两个知识点:

1.进度条进度的设置

在实例化进度条时,我们就为进度条设置了进度,使用的属性是Progress。其语法形式如下:

  • 进度条对象.Progress=;

其中,值是一个浮点类型的数据,它的有效范围为01

2.进度的增加

当触摸Tap to start progress!按钮时,进度条就会实现自动加载进度的功能。它是通过调用Task.Factory.StartNew()方法实现的。它的功能就是创建一个StartProgress()方法的任务,即实现加载。

Xamarin iOS滚动视图

由于iPhone或者是iPad屏幕大小的影响,使我们添加的控件和界面元素受到限制。但是在iPhone或者iPad开发中,人们使用滚动视图解决了这一受到限制的问题。滚动视图由UIScrollView类的一个实例对象实现。

【示例2-24】以下的代码就使用了滚动视图来显示一个比屏幕还要大的图像。具体步骤如下:

1创建一个Single View Application类型的工程,命名为2-10

2添加图像1.jpg到创建工程的Resources文件夹中。

3打开2-10ViewController.cs文件,编写代码,实现通过滚动视图来观看一个比屏幕还有大的图像。代码如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __10ViewController : UIViewController

  •          {

  •                    UIImageView imgView;

  •                    UIScrollView scrollView;

  •               ……                                               //这里省略了视图控制器的构造方法和析构方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •                             imgView = new UIImageView (UIImage.FromFile ("1.jpg"));

  •               //为主视图添加滚动视图对象

  •                             scrollView = new UIScrollView ();

  •                             scrollView.Frame=new RectangleF(0,0,320,568) ;

  •                             scrollView.ContentSize = imgView.Image.Size;                                  //滚动范围的大小

  •                             scrollView.ContentOffset = new PointF (200f, 50f);                           //目前滚动的位置

  •                             scrollView.PagingEnabled = true;                                                           //可以整页翻动

  •                             scrollView.MinimumZoomScale = 0.25f;                                               //缩小的最小比例

  •                             scrollView.MaximumZoomScale = 2f;                                                   //放大的最大比例

  •               //获取要缩放的图像视图

  •                             scrollView.ViewForZoomingInScrollView = delegate(UIScrollView scroll) {

  •                                      return this.imgView;

  •                             } ;

  •                             scrollView.ZoomScale = 1f;                                                                        //设置变化比例

  •                             scrollView.IndicatorStyle = UIScrollViewIndicatorStyle.Black;             //滚动指示器的风格设置

  •                             scrollView.AddSubview (imgView);

  •                             this.View.AddSubview (scrollView);

  •                    }

  • ……                                               //这里省略了视图加载和卸载前后的一些方法

  •                    #endregion

  •          }

  • }

运行结果如图2.42所示。

2.42  运行效果

注意:滚动视图中需要注意以下两点。

1.常用属性

滚动视图的属性有很多,表2-13就总结了滚动视图常用的一些属性。

2-13  滚动视图的属性

2.滚动视图常用事件

在滚动视图中一般会使用到一些事件。这里将常用到的一些事件做了总结,如表2-14所示。

2-14  滚动视图常用事件

【示例2-25】以下将实现滚动视图的滚动,并为滚动视图添加了事件。代码如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __30ViewController : UIViewController

  •          {

  •                    ……                                                         //这里省略了视图控制器的构造方法和析构方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •                             UIScrollView scrollView = new UIScrollView ();

  •                             scrollView.Frame = new RectangleF (0, 0, 320, 568);

  •                             scrollView.ContentSize = new SizeF (320, 2000);

  •                             this.View.AddSubview (scrollView);

  •                             //滚动视图开始滚动时调用

  •                             scrollView.Scrolled += delegate {

  •                                      Console.WriteLine ("开始滚动...");

  •                             } ;

  •                             //滚动视图结束滚动时调用

  •                             scrollView.DecelerationEnded += delegate {

  •                                      Console.WriteLine ("滚动结束...");

  •                             };

  •                             float y = 10;

  •                             //为滚动视图对象添加标签对象

  •                             for (float i = 1; i < 21; i++) {

  •                                      UILabel label = new UILabel ();

  •                                      label.Frame = new RectangleF (0, y, 320, 50);

  •                                      label.BackgroundColor = UIColor.Cyan;

  •                                      label.Text = String.Format ("{0}", i);

  •                                      scrollView.AddSubview (label);

  •                                      y += 100;

  •                             }

  •                    }

  • ……                                                 //这里省略了视图加载和卸载前后的一些方法

  •                    #endregion

  •          }

  • }

运行效果如图2.43所示。

2.43  运行效果

本文选自:Xamarin iOS开发实战大学霸内部资料,转载请注明出处,尊重技术尊重IT人!


© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 246
博文 855
码字总数 555556
作品 0
东城
程序员
Xamarin iOS教程之页面控件

Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示。它是由小白点和滚动视图组成,可以用来控制翻页。在滚动滚...

大学霸
2015/06/23
0
0
Xamarin iOS教程之编辑界面编写代码

Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面。它是一个虚拟的图形化设计工具,用来为iOS应用程序创建图形界面。单击MainStoryboar...

大学霸
2015/06/11
0
0
Xamarin iOS教程之添加和定制视图

Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图。视图是用户界面的重要组成元素。例如,想要让用户实现文本输入时,需要使用输...

大学霸
2015/06/16
0
0
IOS学习,最简单的表格应用程序,学习,列出博客

IOS编程浅蓝教程,这是博客地址http://www.cnblogs.com/haichao/category/425378.html IOS编程浅蓝教程:锲子 IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备 IOS编程浅蓝教程(二) Hel...

andy521zhu
2015/01/17
0
0
【IOS视频教学】三个月学会IOS开发

一、windows系统下安装虚拟机-mac系统-视频教程-安装件全套下载:http://www.wyzc.com/forum/56212.html 二、史上最佳0基础Swift语言视频教程下载链接:http://www.wyzc.com/forum/56744.htm...

马洪伟
2014/12/25
0
0
Xamarin iOS教程之键盘的使用和设置

Xamarin iOS教程之键盘的使用和设置 Xamarin iOS使用键盘 在文本框和文本视图中可以看到,当用户在触摸这些视图后,就会弹出键盘。本节将主要讲解键盘的输入类型定义、显示键盘时改变输入视图...

大学霸
2015/06/19
0
0
一步一步学习 iOS 6 编程(第四版)正式发布

所有范例程序及其截图都采用Xcode 4.4 和Xcode 4.5 最新版开发工具,本书包含了最新的iOS 6 开发技术,如自动布局(Auto Layout)、集合视图(Collection View)等等。 新增内容包括:分割视...

entlib
2012/10/25
0
2
Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序。自从Xamarin问世后,C#的作用就发生了很大的变化。它不仅可以编写关于Windows...

大学霸
2014/10/23
0
0
在Visual Studio中使用C#开发iOS & Android应用程序

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

Yamazaki
2013/11/22
0
0
TeeChart .NET for iOS图表开发入门教程

去年,TeeChart 为iOS图表开发专门发布了TeeChart NET for iOS(包含在TeeChart Mobile中,TeeChart8.5折进行中),相信很多人都对其感兴趣。慧都为大家制作了TeeChart NET for iOS的入门教程...

裸奔的火腿肠
2014/02/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
19分钟前
5
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部