開始熟悉Xamarin在開發IOS的結構!!!!!!!
先看官方
這個是以一個單頁面的程式進行講述的。
1 程式引用的程式集,核心的Xamarin.IOS 程式集,包含了對應版本的API
2 元件 官方商城上的元件
3 資源檔案 位圖 音頻 視訊等檔案
4 Main.cs 定義程式啟動入口
5 AppDelegate.cs 程式啟動後,定義視窗容器,并接收來自系統的事件消息。
6 Main.storyboard 視圖上的部件容器
7 ViewController.cs 控制器
8 ViewController.designer.c ,在畫闆 storyboard 上的部件,在這裡都會自動生成對應的基本屬性設定操作
9 Info.plist 應用的一些基本資訊描述
10 Entitlements.plist 依賴的Apple的服務
程式加載運作流程圖
The <code>AppDelegate</code> class manages the application Window. The Window is a single instance of the <code>UIWindow</code> class that serves as a container for the user interface. By default, an application gets only one Window onto which to load its content, and the Window is attached to aScreen (single <code>UIScreen</code> instance) that provides the bounding rectangle matching the dimensions of the physical device screen.
The AppDelegate is also responsible for subscribing to system updates about important application events such as when the app finishes launching or when memory is low.
定義程式運作時候的視窗容器,視窗 window 是自動适應實體螢幕的。此外,它還負責監聽來自系統的事件通知。比如,app加載中或者記憶體低。
如果你有做過MVC模式的開發,這裡應該很容易。Model-View-Controller。
視圖控制器應該在MVC設計模式中扮演控制層(C)的角色,UIViewController的職責對内管理與之關聯的View,對外跟其他UIViewController通信和協調。一個視圖控制器管理一個視圖(它可以有子視圖),其view屬性指向它所管理的視圖。UIViewController類可以有子類,可以使用一個系統的UIViewController子類或者直接自己建立一個UIViewController的子類。
單界面程式僅僅有一個内容控制器,多界面的程式有多個控制器。每個控制器,對應的内容部件按照一定的層次堆積。(
控制器 跟視圖之間怎麼關聯的,在畫闆(xml)檔案中,有對應的節點,将二者進行了綁定。
)
設計器+畫闆
看到這,我想起了以前做Silverlight的時候,在Blend中進行的動畫設計.............................
每個畫闆都是一個布局場景,在畫闆中有對應的内容布局的層次結構。關聯到對應的控制器。在布局檔案中,上面我們設計UI部件。在右下角,我們設定關聯的控制器。
點選後,在屬性視窗會有對應的顯示。
上圖中,灰色的那個箭頭,是一個Segue,它用來進行視圖之間的的轉換操作。連接配接視圖。
在上面,隻有一個根Segue,表示程式啟動的時候,我們會首先進入這個視圖。視圖中是一個UIView的執行個體,在根視圖,跟内部的子部件View部件進行加載。最終呈現到螢幕上。
UIView中的内容部件的層次,是按照倒樹狀的排列組織的。
下圖,顯示了一個視圖的加載的層次結構。在App啟動後,加載一個window執行個體,提供程式界面的容器。界面UIView包含一個根節點組織的樹狀的内容,子部件。内容關聯的控制器,負責内容的顯示控制,事件操作。
控制器 和 視圖的生命周期
視圖控制器中的基本事件可以被重載的:
1 ViewDidLoad 在視圖被加載進記憶體後觸發調用此方法,我們可以在這裡進行一些初始化的操作
2 ViewWillAppear 視圖即将顯示到螢幕之前調用的
3 ViewWillDisappear 視圖從螢幕消失的之前發生。用來做清理或者狀态的持久化
4 ViewDidAppear and ViewDidDisappear 這一對事件在視圖Render部件或者解除安裝部件的時候 觸發
在不同的階段,我們進行代碼控制視圖。所需要的工作就是對這些方法進行重載!override
視圖控制器最核心的職責,是接受處理,視圖上的部件的事件。比如一個按鈕的點選操作(touch event will be invoked.........)
當我們給視圖中的部件,比如一個Button,給他的Name屬性指派的時候,我們就馬上會在視圖關聯的控制器中的背景檔案中,得到對應的字段聲明。
控制器 跟他的背景檔案 Designer.cs,兩個是一個同名的分部類。partail class.。。。。
這樣的設計,讓我們繪制界面 跟後面綁定的控制代碼保持在一個水準的層次上。(是不是有點傳統的WinForm開發,可見即所得!)
然後,在你對應的控制器中,就可以直接使用命名後的控件。
this.Mybutton!!!!!!!!
其他概念
IOS中的按鈕,設定顯示的文本,是設定Title。。。
控制按鈕是否可用
鍵盤消失方法并沒有提供在IOS的系統SDK中,是以 我們使用上面的方法 來告訴系統,文本框已經不再對應輸入的Focus了。這樣輸入鍵盤就會消失。
額 ,打開電話等操作,通過内置的uri 構架進行。
顯示框 是一個UIAlert控制器,添加自定義啊Action即可。。。。。熟悉MVC的開發人員應該很熟悉。
測試 部署 釋出程式
調試就是在VS或者Xamarin studio中Debug按鈕點選。前提是 你選好了對應的SDK +Device..............并且編譯通過。然後你就可以去你的Mac裝置上看模拟器了。
真機調試
真機調試的話 需要 蘋果的開發者數字證書!!!!!(奶奶的,每年好多銀子)個人學習的話,就測試模拟器就好。。。。
真的釋出程式作品的時候,還是需要下血本買證書的。
證書咋的買,咋的導入到XCode 等等步驟。百度去吧,一大堆
這個得單獨說說。
由于IOS3之後 ,蘋果的螢幕都是 視網膜(Retina)螢幕,這個比較有尿性的是二倍高清顯示,就是相同的區域内可以顯示2個機關的像素,而不是普通螢幕的單像素。。。。
是以 ,圖示都是2X高清圖,還有就是裝置的不同 IPAD IPOD MINI IOS 4 5 6 (s)的螢幕,決定了尺寸的 大小,選圖的時候需要注意...................
好了。開始吧 小夥子。我看好你哦~~~~~~~~~~~