Share via


iOS 6 簡介

iOS 6 包含各種開發應用程式的新技術,Xamarin.iOS 6 為 C# 開發人員帶來。

The iOS 6 logo

使用 iOS 6 和 Xamarin.iOS 6,開發人員現在擁有豐富的功能來建立 iOS 應用程式,包括以 i 電話 5 為目標的應用程式。 本檔列出一些更令人興奮的新功能,這些新功能可供使用,並連結到每個主題的文章。 此外,它也會觸及幾個變更,當開發人員移至iOS 6和i 電話 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 已過時

ViewWillUnloadViewDidUnload 方法 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 。 一般而言,大部分的應用程式都應該移除事件處理程式。

針對儲存狀態的情況,應用程式可以在和 ViewDidDisappearViewWillDisappear執行這項作業,ViewWillUnload而不是 。

i 電話 5 解析度

i 電話 5 個裝置具有 640x1136 解析度。 以舊版 iOS 為目標的應用程式會在 i 電話 5 上執行時出現信箱,如下所示:

Applications that targeted previous versions of iOS will appear letterboxed when run on an iPhone 5

為了讓應用程式在 i 電話 5 上顯示全螢幕,只需新增名為 Default-568h@2x.png 的影像,解析度為 640x1136。 下列螢幕快照顯示包含此映射之後執行的應用程式:

This screenshot shows the application running after this image has been included

子類別化 UINavigationBar

在 iOS 6 UINavigationBar 中可以子類別化。 這允許對的外觀和風格 UINavigationBar進行額外的控制。 例如,應用程式可以子類別新增子檢視、建立這些檢視的動畫,並修改的 UINavigationBar界限。

下列程式代碼顯示新增 的子類別UINavigationBarUIImageView化範例:

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使用此子類別會導致影像檢視顯示,如下列螢幕快照所示:

Using this UINavigationBar subclass results in the image view being displayed as shown in this screenshot

介面方向

在 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 實作,這會預設為所有四個方向。 在 i 電話 和 iPod Touch 上,預設值為 以外的PortraitUpsideDown所有方向。