Xamarin.IOS之快速入门

欢迎你们加入如下开源社区ios

Xamarin-Cn:https://github.com/Xamarin-Cngit

Mvvmcross-Cn:https://github.com/Mvvmcross-Cn github

(另外微信订阅号 Xamarin 全部者@善友兄也给予了运营权限,后面将开始陆续运营起来,给你们推送相关的文章)微信

 

 

本人利用业余的时间编写了关于Xamarin.Android的基础教程,得到了不少人的支持。可是笔者打内心想说的就是这个教程所能提供的知识太有限了,等笔者到新的工做后,会开始抓紧时间写一些实战开发中运用的技术以及技巧。如今笔者带着你们进入Xamarin.IOS的入门教程。ide

 

关于环境

若是读者是破解的,那么mac这边的破解可能会伤脑筋,笔者使用的商业版的帐号。固然我这里建议你们能够到淘宝购买,其实商业版若是以学校机构购买很便宜的。关于环境的讲解就到这吧,下面开始正题(这里推荐一个比较好的QQ群【230865920】)工具

 

关于mac与vs匹配

不知道你们有没人卡在这,并非mac端安装完毕,vs就能够链接。这里还须要一个过程,笔者在这里简单的介绍下。ui

 

首先咱们在mac端找到这个应用打开:this

而后呈现的界面以下所示:编码

这个时候咱们点击Pair以后出现下面这个界面:url

其中的这串字符是须要在VS那边进行匹配的时候输入的,在没有匹配前不要点击close。这样mac端的就完成了,下面咱们转战到vs中。

 

打开vs后点击“工具”->“选项”->“Xamarin”->“iOS Settings”显示以下的界面:

这个时候咱们点击“Find Mac Build Host”以后出现下面这个界面:

直接点击Continue,进入到主界面:

这里笔者知道mac的ip地址,因此直接点击“Configure Host Manually”,输入ip地址并肯定。而后等待链接,链接完成后弹出这个窗口:

在其中输入mac中的字符便可。

 

正文

如今咱们开始进入正文,首先咱们经过VS建立一个IOS项目,具体过程以下所示:

新建完项目后打开下面的这个界面(后面跟UI相关的操做咱们都会在这个文件中进行操做)

 

打开以后咱们从工具栏选择一个“Label”控件放入其中并修改对应的文字,以下所示:

 

接着再拖放一个“Text Field”控件放在Label下方,而且宽度同样。并在属性窗口的Placeholder属性中输入“1-855-XAMARIN”。而且在Identity下的Name中输入“PhoneNumberText”,这个名字会致使自动生成控件的命名,相似于ASP.NET中的ID属性。下面咱们接着拖放一个按钮并设置其Name为“TranslateButton”:

 

最后放入一个按钮并设置Name为“CallButton”:

这样咱们就完成了整个界面的设计了。下面咱们就要开始具体的编码了,首先咱们新建一个cs文件,而且在其中输入如下的代码:

 1 public static class PhoneTranslator
 2     {
 3         public static string ToNumber(string raw)
 4         {
 5             if (string.IsNullOrEmpty(raw))
 6             {
 7                 return "";
 8             }
 9             else
10             {
11                 raw = raw.ToUpperInvariant();
12             }
13 
14             var newNumber = new StringBuilder();
15             foreach (var c in raw)
16             {
17                 if (" -0123456789".Contains(c))
18                 {
19                     newNumber.Append(c);
20                 }
21                 else
22                 {
23                     var result = TranslateToNumber(c);
24                     if (result != null)
25                         newNumber.Append(result);
26                 }
27             }
28             return newNumber.ToString();
29         }
30 
31         static bool Contains(this string keyString,char c)
32         {
33             return keyString.IndexOf(c) >= 0;
34         }
35 
36         static int? TranslateToNumber(char c)
37         {
38             if ("ABC".Contains(c))
39             {
40                 return 2;
41             }
42             else if ("DEF".Contains(c))
43             {
44                 return 3;
45             }
46             else if("GHI".Contains(c))
47             {
48                 return 4;
49             }
50             else if("JKL".Contains(c))
51             {
52                 return 5;
53             }
54             else if("MNO".Contains(c))
55             {
56                 return 6;
57             }
58             else if("PQRS".Contains(c))
59             {
60                 return 7;
61             }
62             else if("TUV".Contains(c))
63             {
64                 return 8;
65             }
66             else if("WXYZ".Contains(c))
67             {
68                 return 9;
69             }
70             return null;
71         }
72 }
View Code

 

 

接着咱们打开RootViewController文件并在ViewDidLoad中完成剩余功能的开发,首先咱们定义一个字符串用来保存最终须要拨打的电话号码并未Translate按钮绑定监听事件,在点击的时候改变Call按钮的文字,显示须要拨打的电话:

 1 string translatedNumber = "";
 2 TranslateButton.TouchUpInside += (e, s) =>
 3 {
 4      //将输入的文字转换为号码
 5      translatedNumber = PhoneTranslator.ToNumber(PhoneNumberText.Text);
 6 
 7      //关闭键盘
 8      PhoneNumberText.ResignFirstResponder();
 9 
10      if (translatedNumber == "")
11      {
12            CallButton.SetTitle("Call", UIControlState.Normal);
13            CallButton.Enabled = false;
14      }
15      else
16      {
17           CallButton.SetTitle("Call " + translatedNumber,
18                UIControlState.Normal);
19           CallButton.Enabled = true;
20      }
21 };
View Code

 

 

完成了第一个按钮开发以后咱们继续下一个按钮,这个按钮将会完成拨打电话的功能,若是电话拨打失败则会弹出提示:

 1 CallButton.TouchUpInside += (e, s) =>
 2 {
 3      //建立NSUrl并经过SharedApplication打开
 4      var url = new NSUrl("tel:" + translatedNumber);
 5      if(!UIApplication.SharedApplication.OpenUrl(url))
 6      {
 7         //拨打失败则弹出提示框
 8         var alert = UIAlertController.Create("Not supported",
 9               "Scheme 'tel:' is not supported on this device",
10               UIAlertControllerStyle.Alert);
11               alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
12         PresentViewController(alert, true, null);
13      }
14 };
View Code

其中咱们须要经过构建NSUrl来指定须要拨打的电话,这里跟Android的方式很类似,在Android中就是同构构建Intent来实现,而后用过UIApplication中的SharedApplication打开这个NSUrl,若是拨打失败则会利用UIAlertController构建一个提示框,这里咱们经过Create指定对话框的标题、内容以及样式,而后再经过AddActiontian添加一个按钮。最后经过PresentViewConroller打开。

 

最后咱们还须要设置应用的图标以及缓冲图片,这里咱们须要右击项目属性并点击IOS Application,咱们能够看到须要设置多个图标,而且在缓冲界面部分须要制定三张图。这里笔者能够经过官方的地址下载图片资源

 

最后的成品界面以下所示:

在拨打时候的时候弹出以下的对话框:

相关文章
相关标签/搜索