欢迎大家加入以下开源社区

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

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

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

本人利用业余的时间编写了关于Xamarin.Android的基础教程,获得了很多人的支持。但是笔者打心里想说的就是这个教程所能提供的知识太有限了,等笔者到新的工作后,会开始抓紧时间写一些实战开发中运用的技术以及技巧。现在笔者带着大家进入Xamarin.IOS的入门教程。

关于环境

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

关于mac与vs匹配

不知道大家有没人卡在这,并不是mac端安装完毕,vs就可以连接。这里还需要一个过程,笔者在这里简单的介绍下。

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

然后呈现的界面如下所示:

这个时候我们点击Pair之后出现下面这个界面:

其中的这串字符是需要在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文件,并且在其中输入以下的代码:

 public static class PhoneTranslator
{
public static string ToNumber(string raw)
{
if (string.IsNullOrEmpty(raw))
{
return "";
}
else
{
raw = raw.ToUpperInvariant();
} var newNumber = new StringBuilder();
foreach (var c in raw)
{
if (" -0123456789".Contains(c))
{
newNumber.Append(c);
}
else
{
var result = TranslateToNumber(c);
if (result != null)
newNumber.Append(result);
}
}
return newNumber.ToString();
} static bool Contains(this string keyString,char c)
{
return keyString.IndexOf(c) >= ;
} static int? TranslateToNumber(char c)
{
if ("ABC".Contains(c))
{
return ;
}
else if ("DEF".Contains(c))
{
return ;
}
else if("GHI".Contains(c))
{
return ;
}
else if("JKL".Contains(c))
{
return ;
}
else if("MNO".Contains(c))
{
return ;
}
else if("PQRS".Contains(c))
{
return ;
}
else if("TUV".Contains(c))
{
return ;
}
else if("WXYZ".Contains(c))
{
return ;
}
return null;
}
}

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

 string translatedNumber = "";
TranslateButton.TouchUpInside += (e, s) =>
{
//将输入的文字转换为号码
translatedNumber = PhoneTranslator.ToNumber(PhoneNumberText.Text); //关闭键盘
PhoneNumberText.ResignFirstResponder(); if (translatedNumber == "")
{
CallButton.SetTitle("Call", UIControlState.Normal);
CallButton.Enabled = false;
}
else
{
CallButton.SetTitle("Call " + translatedNumber,
UIControlState.Normal);
CallButton.Enabled = true;
}
};

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

 CallButton.TouchUpInside += (e, s) =>
{
//创建NSUrl并通过SharedApplication打开
var url = new NSUrl("tel:" + translatedNumber);
if(!UIApplication.SharedApplication.OpenUrl(url))
{
//拨打失败则弹出提示框
var alert = UIAlertController.Create("Not supported",
"Scheme 'tel:' is not supported on this device",
UIAlertControllerStyle.Alert);
alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
PresentViewController(alert, true, null);
}
};

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

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

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

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

Xamarin.IOS之快速入门的更多相关文章

  1. Xamarin.IOS之多视图

    欢迎大家加入以下开源社区 Xamarin-Cn:https://github.com/Xamarin-Cn Mvvmcross-Cn:https://github.com/Mvvmcross-Cn  ...

  2. CI Weekly #21 | iOS 持续集成快速入门指南

    搭建 iOS 持续集成环境要多久?每个 iOSer 都有不同的答案.这次我们整理了 flow.ci 的 iOS 持续集成的相关文档和最佳实践,希望帮你更快地完成构建.更新文档见: flow.ci iO ...

  3. 使用Xamarin.Forms跨平台开发入门 Hello,Xamarin.Forms 第一部分 快速入门

    本文介绍了如何使用VisualStudio开发Xamarin.Forms 应用程序和使用Xamarin.Forms开发应用的基础知识,包括了构建和发布Xamarin.Forms应用的工具,概念和步骤. ...

  4. Hello, Android 快速入门

    Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...

  5. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  6. html5快速入门(一)—— html简介

    前言: 1.HTML5的发展非常迅速,可以说已经是前端开发人员的标配,在电商类型的APP中更是运用广泛,这个系列的文章是本人自己整理,尽量将开发中不常用到的剔除,将经常使用的拿出来,使需要的朋友能够真 ...

  7. Xamarin.iOS模拟器调试找不到资源文件

    Xamarin.iOS模拟器调试找不到资源文件 在Visual Studio 2015中,运行Xamarin.iOS项目,出现找不到资源文件的错误.错误信息:System.IO.FileNotFoun ...

  8. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  9. 用c#开发苹果应用程序 xamarin.ios方式

    NetworkComms网络通信框架序言 Networkcomms网络通信框架来自于英国,支持以xamarin.ios的方式开发苹果应用程序 其开源版本2.3.1中带有一个示例程序,实现聊天功能,只要 ...

随机推荐

  1. package、import和import static

    package 语句: 该语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包,即只能包含一条package语句. import 和import static 关键字: 引入import关 ...

  2. 20151208Study

    20151208-----------------------------------------------------* Her main interest now is raising her ...

  3. Oracle行转列(使用pivot函数)

    在日常使用中,经常遇到这样的情况,需要将数据库中行转化成列显示,如 转化为 这个时候,我们就需要使用pivot函数 百度后,参考网址http://www.2cto.com/database/20150 ...

  4. What's VPC (by quqi99)

    作者:张华  发表于:2014-12-09版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) VPC ...

  5. axure设置变量值

    以登录框为例设置axure变量值 1.打开axure,打开新页面命名为login,拖入一个矩形背景,命名:登录背景图 2.拖入标签控件和输入框控件分别命名为用户名:.userName.密码:.pass ...

  6. 一个CURL

    CURL curl是利用url语法规则来传输文件,数据的工具,主要实现和服务器中网页,资源传输的工具.这里有一个关于感冒还没好的段子. 1.去phpini开启curl扩展,重启阿帕奇或者配置环境变量或 ...

  7. 【笔记】memorymanagement-whitepaper-150215

    3 GC概念 Gc的职责: 1)  分配内存 2)  保证被引用的对象驻留内存 3)  对象不可达后将其占用内存回收 被引用对象被称为 “存活对象”. 不再被引用的对象称为“垃圾对象”. 找到垃圾对象 ...

  8. 手拼SQL小技巧,WHERE 1=1

    由于项目要求,要手动拼接SQL,(不知道领导们怎么想的--),然后就再次回到原始时代,append(SQL). 但后面查询牵扯到动态多条件,如果是mybatis的话就直接 可以用<if>标 ...

  9. linux下subversion server安装手册

    linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...

  10. 代写assignment

    集英服务社,强于形,慧于心 集英服务社,是一家致力于优质学业设计的服务机构,为大家提供优质原创的学业解决方案.多年来,为海内外学子提供了多份原创优质的学业设计解决方案. 集英服务社,代写essay/a ...