Xamarin.IOS之快速入門


歡迎大家加入以下開源社區

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文件,並且在其中輸入以下的代碼:

 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,我們可以看到需要設置多個圖標,並且在緩沖界面部分需要制定三張圖。這里筆者可以通過官方的地址下載圖片資源

 

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

在撥打時候的時候彈出如下的對話框:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM