Einführung in iOS 6

iOS 6 enthält eine Vielzahl neuer Technologien für die Entwicklung von Apps, die Xamarin.iOS 6 C#-Entwicklern bietet.

Das iOS 6-Logo

Mit iOS 6 und Xamarin.iOS 6 stehen Entwicklern jetzt eine Fülle von Funktionen zur Verfügung, um iOS-Anwendungen zu erstellen, einschließlich solcher, die auf das iPhone 5 abzielen. Dieses Dokument listet einige der spannenderen neuen Features auf, die verfügbar sind, und Links zu Artikeln für jedes Thema. Darüber hinaus berührt es ein paar Änderungen, die wichtig sein werden, wenn Entwickler zu iOS 6 und der neuen Auflösung des iPhone 5 wechseln.

Einführung in Sammlungsansichten

Sammlungsansichten ermöglichen die Anzeige von Inhalten in beliebigen Layouts. Sie ermöglichen es, rasterähnliche Layouts einfach sofort zu erstellen und gleichzeitig benutzerdefinierte Layouts zu unterstützen. Weitere Informationen finden Sie im Leitfaden Einführung in Sammlungsansichten .

Introduction to PassKit (Einführung in PassKit)

Das PassKit-Framework ermöglicht Anwendungen die Interaktion mit digitalen Pässen, die in der Passbook-App verwaltet werden. Weitere Informationen finden Sie im Leitfaden Einführung in das Pass Kit.

Einführung in EventKit

Das EventKit-Framework bietet eine Möglichkeit, auf die Kalender-, Kalenderereignisse- und Erinnerungsdaten zuzugreifen, die in der Kalenderdatenbank gespeichert werden. Der Zugriff auf die Kalender und Kalenderereignisse ist seit iOS 4 verfügbar, aber iOS 6 macht jetzt den Zugriff auf Erinnerungsdaten verfügbar. Weitere Informationen finden Sie im LeitfadenI ntroduction to EventKit .

Einführung in das Soziale Framework

Das Social Framework bietet eine einheitliche API für die Interaktion mit sozialen Netzwerken wie Twitter und Facebook sowie SinaWeibo für Benutzer in China. Weitere Informationen finden Sie im Leitfaden Einführung in das Sozialframework .

Änderungen an StoreKit

Apple hat zwei neue Features im Store Kit eingeführt: Kaufen und Herunterladen von iTunes- oder App Store Inhalten aus Ihrer App und Hosten Ihrer Inhaltsdateien für In-App-Käufe!. Weitere Informationen finden Sie im Leitfaden zu Änderungen am Store Kit .

Weitere Änderungen

ViewWillUnload und ViewDidUnload veraltet

Die ViewWillUnload Methoden und ViewDidUnload von UIViewController werden in iOS 6 nicht mehr aufgerufen. In früheren Versionen von iOS wurden diese Methoden möglicherweise von Anwendungen zum Speichern des Zustands vor dem Entladen einer Ansicht bzw. zum Bereinigen von Code verwendet.

Beispielsweise würde Visual Studio für Mac eine Methode namens ReleaseDesignerOutletserstellen, die unten gezeigt wird, die dann von ViewDidUnloadaufgerufen wird:

void ReleaseDesignerOutlets ()
{
    if (myOutlet != null) {
        myOutlet.Dispose ();
        myOutlet = null;
    }
}

In iOS 6 ist es jedoch nicht mehr erforderlich, aufzurufen ReleaseDesignerOutlets.

Zum Bereinigen von Code sollten iOS 6-Anwendungen verwenden DidReceiveMemoryWarning. Code, der aufruft Dispose , sollte jedoch sparsam und nur für speicherintensive Objekte verwendet werden, wie unten gezeigt:

if (myImageView != null){
    if (myImageView.Superview == null){
        myImageView.Dispose();
        myImageView = null;
    }
}

Auch hier sollte der Aufruf Dispose wie oben selten erforderlich sein. Im Allgemeinen sollten Die meisten Anwendungen tun, ist das Entfernen von Ereignishandlern.

Für den Fall des Speicherzustands können Anwendungen dies in ViewWillDisappear und ViewDidDisappear anstelle von ViewWillUnloadausführen.

iPhone 5 Auflösung

iPhone 5-Geräte haben eine Auflösung von 640 x 1136. Anwendungen, die auf frühere Versionen von iOS ausgerichtet sind, werden bei der Ausführung auf einem iPhone 5 wie unten gezeigt in einem Briefkasten angezeigt:

Anwendungen, die auf frühere Versionen von iOS ausgerichtet sind, werden im Briefkasten angezeigt, wenn sie auf einem iPhone 5 ausgeführt werden

Damit die Anwendung auf dem iPhone 5 im Vollbildmodus angezeigt wird, fügen Sie einfach ein Bild mit Default-568h@2x.png der Auflösung 640 x 1136 hinzu. Der folgende Screenshot zeigt die Anwendung, die nach der Aufnahme dieses Bilds ausgeführt wird:

Dieser Screenshot zeigt die Anwendung, die nach der Aufnahme dieses Bilds ausgeführt wird.

Unterklassen von UINavigationBar

In iOS 6 UINavigationBar kann unterklassiert werden. Dies ermöglicht eine zusätzliche Kontrolle über das Aussehen und Verhalten von UINavigationBar. Anwendungen können beispielsweise Unterklassen hinzufügen, diese Ansichten animieren und die Grenzen des UINavigationBarändern.

Der folgende Code zeigt ein Beispiel für eine Unterklasse UINavigationBar , die eine UIImageViewhinzufügt:

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);
​    }
}

Um eine Unterklasse UINavigationBar zu hinzuzufügen UINavigationController, verwenden Sie den UINavigationController Konstruktor, der den Typ von UINavigationBar und UIToolbarannimmt, wie unten gezeigt:

navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));

Die Verwendung dieser UINavigationBar Unterklasse führt dazu, dass die Bildansicht wie im folgenden Screenshot dargestellt angezeigt wird:

Die Verwendung dieser UINavigationBar-Unterklasse führt dazu, dass die Bildansicht wie in diesem Screenshot dargestellt angezeigt wird.

Schnittstellenausrichtung

Vor iOS 6 konnten Anwendungen überschreiben ShouldAutorotateToInterfaceOrientation, wobei true für alle vom jeweiligen Controller unterstützten Ausrichtungen zurückgegeben wurde. Beispielsweise wird der folgende Code verwendet, um nur Hochformat zu unterstützen:

public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
    {
        return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
    }

In iOS 6 ShouldAutorotateToInterfaceOrientation ist veraltet. Stattdessen können Anwendungen auf dem Stammansichtscontroller wie unten dargestellt überschreiben GetSupportedInterfaceOrientations :

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
    {
        return UIInterfaceOrientationMask.Portrait;
    }

Auf dem iPad werden standardmäßig alle vier Ausrichtungen verwendet, wenn GetSupportedInterfaceOrientation nicht implementiert ist. Auf iPhone und iPod Touch sind standardmäßig alle Ausrichtungen mit Ausnahme von PortraitUpsideDown.