在Xcode以及Xamarin安装好后,就可以在Xamarin Studio中编写程序了。本节将主要讲解在Xamarin Studio中如何进行工程的创建,以及编写代码等内容。
很多开发工具在编写代码之前,都必须创建一个工程,如Visual Studio、Xcode等。可以很好地将iOS应用程序开发中使用的文件都保存在这个工程中。在Xamarin Studio中该如何创建一个功能呢?以下就是它的步骤。
(1)单击Xamarin Studio,弹出Xamarin Studio对话框,如图1.34所示。
(2)选择New Solution选项,弹出“新建解决方案”对话框。选择iOS下的iPhone项目中的Single View Application选项,在名称一栏中输入HelloWorld,然后设置工程的保存位置,如图1.35所示。
注意: 在输入名称时,不可以出现空格,只可以使用字符、数字、'.'、'_'。
(3)最后单击“确定”按钮,这样就创建好一个工程名为“HelloWorld”的工程了。在此工程中可以开发iPhone的应用程序,如图1.36所示。
创建好工程后,就可以单击Xamarin Studio上方的运行按钮,如图1.37所示,对HelloWorld项目进行编辑、连接以及运行了。运行效果如图1.38所示。
由于在此HelloWorld的功能中没有做任何的事情,所以,运行结果是不会产生任何效果的。
注意: 如果是第一次运行Xamarin Studio的程序,可能会出现如下的错误:
Error: A valid Xcode installation could not be found. If your copy of Xcode is installed to a non-standard prefix, please specify the location in Xamarin Studio's Preferences under 'SDK Locations'.
此错误是没有找到安装的Xcode,解决此错误的步骤如下。
(1)选择菜单栏中的Xamarin|Preferences命令,弹出“选项”对话框,如图1.39所示。
(2)选择SDK Locations下的Apple选项,在Apple SDK中单击“浏览”按钮,找到Xcode的位置,或者直接输入Xcode的位置,如图1.40所示。
(3)单击“确定”按钮,就可以看到此错误就没有了。
在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator。在没有iPhone或iPad设备时,可以使用iOS Simulator对程序进行检测。iOS Simulator可以模仿真实的iPhone或iPad等设备的各种功能,如表1-3所示。
注意: 在表1-3所示的功能中,iOS Simulator只能实现这些功能,其他的功能是实现不了的,如打电话、发送SMS信息、获取位置数据、照照相、麦克风等。
如果想要将图1.38所示的应用程序(为用户完成某种特定功能所设计的程序被称为应用程序)退出,该怎么办呢?这时就需要选择菜单栏中的“硬件”|“首页”命令,退出应用程序后的效果,如图1.41所示。
在图1.41中可以看到,退出应用程序后,此应用程序的图标是一个网格状的白色图标,它是iOS默认的图标,一般开发者都不会使用此图标,而是使用自己设置的图标。更改默认图标的具体步骤如下所述。
(1)回到HelloWorld工程中,双击打开Info.plist文件,如图1.42所示。
(2)找到App Icons下的iOS 7 @2x,在iOS 7 @2x上方有一个空白区域,选择它,弹出选择文件对话框,选择某一图像文件,单击Open按钮,此时选择的图像就显示在这个空白区域上了,如图1.43所示。
注意: 在App Icons中,有3个空白区域。每一个空白区域对应的iOS都是不一样的,并且显示的内容大小也是不一样的。显示的内容必需符合空白区域的要求。例如,iOS 7 @2x对应的空白区域要求显示120×120像素的内容,所选择的图像就必须是120×120像素的。
单击运行按钮,在出现运行效果后,退出应用程序,就可以看到更改后的图标了,如图1.44所示。
在讲解iOS Simulator的功能时,提到了它可以实现屏幕旋转的功能,那么怎样将iOS Simulator进行旋转,从而实现屏幕的选择呢?它的实现其实很简单,开发者只需要同时按住Command键和某一个方向键就可以了,如图1.45所示。
当开发者想要删除iOS Simulator上的某一应用程序,可以采用以下步骤。
(1)长按要删除的应用程序的图标,一段时间后,在要删除的应用程序的左上方会出现一个删除图标,如图1.46所示。
(2)单击删除图标,会弹出一个提醒对话框,如图1.47所示。
(3)单击Delete按钮,删除此应用程序,此时iOS Simulator的效果如图1.48所示。
Interface Builder被称为编辑界面,它是一个虚拟的图形化设计工具,用来为iOS应用程序创建图形界面,单击打开MainStoryboard.storyboard就打开编辑界面了,在现在的Xamarin Studio 5.2.1中,编辑界面直接使用的是Storyboard故事面板,以前则使用的是XIB(对于XIB的使用会在后面的章节中讲解)。它们之间最大的不同在于,Storyboard故事面板可以对多个主视图进行设置,而XIB只可以对一个主视图进行设置。以下是对编辑界面的介绍。
单击MainStoryboard.storyboard文件打开编辑界面后,可以看到编辑界面由4部分组成,如图1.49所示。
其中,编号为1的部分为主视图的属性设置,例如可以设置主视图的尺寸大小、iOS的版本等。编号为2的部分为画布,用于设计用户界面,在画布中用箭头指向的区域就是设计界面;在画布中可以有多个设计界面,一般将设计界面称为场景或者主视图。编号为3的部分为工具栏,在此工具栏中存放了很多视图对象。编号为4的部分为属性设置窗口,在其中可以对视图对象的属性进行设置。
如果想要iOS Simulator上显示一个标签,就要对编辑界面进行设置。选择工具栏中的Label对象,将其拖动到画布的主视图中,如图1.50所示。
在属性中对Label标签对象的字体颜色以及对齐方式进行设置,如图1.51所示。设置后主视图的效果如图1.52所示。
运行效果如图1.53所示。
除了可以使用Interface Builder对主视图进行设置外,还可以使用代码进行设置。代码就是用来实现某一特定的功能,而用计算机语言编写的命令序列的集合。现在就来实现通过代码将标签中显示的内容设置为Hello World字符串,操作步骤如下所述。
(1)回到MainStoryboard.storyboard文件,选择主视图上的Label对象,然后在属性的Identity下将Name设置为mylabel。Name属性相当于为Label对象起了一个别名,开发者可以通过在Name中设置的内容来控制Label标签,其他的视图也一样。
(2)打开HelloWorldViewController.cs文件,编写代码,实现将标签中显示的内容设置为Hello World字符串。代码如下:
using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace HelloWorld
{
public partial class HelloWorldViewController : UIViewController
{
…… //这里省略了视图控制器的构造方法和析构方法
#region View lifecycle
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
mylabel.Text="Hello World"; //设置标签中显示的内容
}
…… //这里省略了视图加载和卸载前后的一些方法
#endregion
}
}
运行效果如图1.54所示。
注意: 使用代码编写的部分,也会更新到MainStoryboard.storyboard文件的主视图中,效果如图1.55所示。
调试又被称为排错,是发现和减少程序错误的一个过程。在Xamarin Studio中进行调试的需要实现以下几个步骤。
在进行程序调试之前,首先需要为程序添加断点,断点是指可以暂停调试器中程序的运行,并可以让开发者查看程序的地方。将光标移动到要添加断点的地方,按住Command+\键或者选择菜单栏中的“运行”|“切换断点”命令进行断点的添加,之后会在添加断点代码的最左边看到一个红色的小圆圈,并且这一行代码也被涂成了红色,如图1.56所示。
单击运行按钮后,程序就会运行。这时运行的程序会停留在断点所在的位置,此代码最左边的圆圈中会出现黑色的箭头,并且代码行被涂成了黄色,表示现在程序运行到的位置,如图1.57所示。不仅如此,iOS Simulator也会显示,但是没有内容。
在程序停留下来后,会出现断点导航,如图1.58所示。开发者可以使用此导航来控制程序的执行。
创建好工程后,会看到一些文件以及文件夹,以下针对几个重要并且常用的文件进行讲解。
Resources文件夹:存放了应用程序所需的资源,如图像、音乐文件等。
AppDelegate.cs:主要的应用程序类別(class),并接听来自作业系统的事件及相对应的事件处理。
Entitlements.plist:设置服务是否开启等内容。
HelloWorldViewController.cs:负责视图控制器的生命周期,也就是MVC分层的Controller。
HelloWorldViewController.designer.cs:包含界面中物件的定义及动作(Action)的宣告。
Info.plist:应用程序的资讯档,如名称、版本、图示等。
Main.cs:应用程序的进入点。
MainStoryboard.storyboard:可以用来设置应用程序的图形界面。