iOS 6 簡介
iOS 6 包含各種開發應用程式的新技術,Xamarin.iOS 6 為 C# 開發人員帶來。
有了 iOS 6 和 Xamarin.iOS 6,開發人員現在擁有豐富的功能來建立 iOS 應用程式,包括以 iPhone 5 為目標的應用程式。 本檔列出一些更令人興奮的新功能,這些新功能可供使用,並連結到每個主題的文章。 此外,它還涉及一些變更,隨著開發人員移至iOS 6和iPhone 5的新解析度,這一點非常重要。
集合檢視簡介
集合檢視允許使用任意版面配置來顯示內容。 它們可讓您輕鬆地立即建立類似網格線的配置,同時支援自定義版面配置。 如需詳細資訊, 請參閱集合檢視 簡介指南。
PassKit 簡介
PassKit 架構可讓應用程式與 Passbook 應用程式中管理的數位傳遞互動。 如需詳細資訊, 請參閱Pass Kit 簡介指南。
EventKit 簡介
EventKit 架構可讓您存取行事曆資料庫所儲存的行事曆、行事曆事件和提醒數據。 自 iOS 4 以來,已有行事曆和行事曆事件的存取權,但 iOS 6 現在會公開提醒數據的存取權。 如需詳細資訊,請參閱對 EventKit 的 Itroduction 指南。
社交架構簡介
社交架構提供統一的 API,可與 Twitter 和 Facebook 等社交網路互動,以及中國使用者的新浪威博。 如需詳細資訊, 請參閱社交架構 簡介指南。
StoreKit 的變更
Apple 在 Store Kit 中引進了兩項新功能:從您的應用程式內購買和下載 iTunes 或 App Store 內容,以及裝載內容檔案以進行應用程式內購買!。 如需詳細資訊, 請參閱 Store Kit 的變更指南。
其他變更
ViewWillUnload 和 ViewDidUnload 已過時
的 ViewWillUnload
和 ViewDidUnload
方法 UIViewController
不再在 iOS 6 中呼叫。 在舊版的 iOS 中,應用程式可能已使用這些方法來儲存狀態,再分別卸除檢視和清除程序代碼。
例如,Visual Studio for Mac 會建立名為 ReleaseDesignerOutlets
的方法,如下所示,然後從 ViewDidUnload
呼叫:
void ReleaseDesignerOutlets ()
{
if (myOutlet != null) {
myOutlet.Dispose ();
myOutlet = null;
}
}
不過,在 iOS 6 中,不再需要呼叫 ReleaseDesignerOutlets
。
針對清除程式碼,iOS 6 應用程式應該使用 DidReceiveMemoryWarning
。 不過,呼叫的程式代碼 Dispose
應該謹慎使用,而且只用於記憶體密集物件,如下所示:
if (myImageView != null){
if (myImageView.Superview == null){
myImageView.Dispose();
myImageView = null;
}
}
同樣地,很少需要如上所示呼叫 Dispose
。 一般而言,大部分的應用程式都應該移除事件處理程式。
針對儲存狀態的情況,應用程式可以在和 ViewDidDisappear
中ViewWillDisappear
執行這項作業,ViewWillUnload
而不是 。
iPhone 5 解析度
iPhone 5 裝置具有 640x1136 解析度。 以舊版 iOS 為目標的應用程式在 iPhone 5 上執行時,會出現信箱,如下所示:
為了讓應用程式在 iPhone 5 上全螢幕顯示,只需新增名為 Default-568h@2x.png
的影像,解析度為 640x11136。 下列螢幕快照顯示包含此映射之後執行的應用程式:
子類別化 UINavigationBar
在 iOS 6 UINavigationBar
中可以子類別化。 這允許對的外觀和風格 UINavigationBar
進行額外的控制。 例如,應用程式可以子類別新增子檢視、建立這些檢視的動畫,並修改的 UINavigationBar
界限。
下列程式代碼顯示新增 的子類別UINavigationBar
UIImageView
化範例:
public class CustomNavBar : UINavigationBar
{
UIImageView iv;
public CustomNavBar (IntPtr h) : base(h)
{
iv = new UIImageView (UIImage.FromFile ("monkey.png"));
iv.Frame = new CGRect (75, 0, 30, 39);
}
public override void Draw (RectangleF rect)
{
base.Draw (rect);
TintColor = UIColor.Purple;
AddSubview (iv);
}
}
若要將子類別UINavigationBar
新增至 UINavigationController
,請使用UINavigationController
接受和UIToolbar
類型的UINavigationBar
建構函式,如下所示:
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
UINavigationBar
使用此子類別會導致影像檢視顯示,如下列螢幕快照所示:
介面方向
在 iOS 6 應用程式之前,可以覆寫 ShouldAutorotateToInterfaceOrientation
,針對支援之特定控制器的任何方向傳回 true。 例如,下列程式代碼將只支援直向:
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
在 iOS 6 ShouldAutorotateToInterfaceOrientation
中已被取代。
相反地,應用程式可以在根檢視控制器上覆寫 GetSupportedInterfaceOrientations
,如下所示:
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
在 iPad 上,如果未 GetSupportedInterfaceOrientation
實作,這會預設為所有四個方向。 在 iPhone 和 iPod Touch 上,預設值為 以外的 PortraitUpsideDown
所有方向。