Introduction à iOS 6

iOS 6 inclut une variété de nouvelles technologies pour le développement d’applications, que Xamarin.iOS 6 apporte aux développeurs C#.

Logo iOS 6

Avec iOS 6 et Xamarin.iOS 6, les développeurs disposent désormais d’une multitude de fonctionnalités à leur disposition pour créer des applications iOS, y compris celles qui ciblent iPhone 5. Ce document répertorie certaines des nouvelles fonctionnalités les plus intéressantes disponibles et des liens vers des articles pour chaque rubrique. En outre, il touche à quelques changements qui seront importants à mesure que les développeurs passent à iOS 6 et la nouvelle résolution de l’iPhone 5.

Présentation des vues de collection

Les vues de collection permettent d’afficher du contenu à l’aide de dispositions arbitraires. Ils permettent de créer facilement des dispositions de type grille prêtes à l’emploi, tout en prenant en charge les dispositions personnalisées. Pour plus d’informations, consultez le guide Présentation des vues de collection .

Présentation de PassKit

L’infrastructure PassKit permet aux applications d’interagir avec des passes numériques gérées dans l’application Passbook. Pour plus d’informations, consultez le guide Introduction au kit de réussite.

Présentation d’EventKit

L’infrastructure EventKit permet d’accéder aux données calendriers, événements de calendrier et rappels que la base de données calendrier stocke. L’accès aux calendriers et aux événements de calendrier est disponible depuis iOS 4, mais iOS 6 expose désormais l’accès aux données de rappels. Pour plus d’informations, consultez le guide Introduction to EventKit .

Présentation de l’infrastructure sociale

Social Framework fournit une API unifiée pour interagir avec les réseaux sociaux, notamment Twitter et Facebook, ainsi que SinaWeibo pour les utilisateurs en Chine. Pour plus d’informations, consultez le guide Introduction à l’infrastructure sociale .

Changements apportés à StoreKit

Apple a introduit deux nouvelles fonctionnalités dans le Kit Store : l’achat et le téléchargement de contenu iTunes ou App Store à partir de votre application, et l’hébergement de vos fichiers de contenu pour les achats dans l’application!. Pour plus d’informations, consultez le guide Modifications apportées au kit store .

Autres modifications

ViewWillUnload et ViewDidUnload Deprecated

Les ViewWillUnload méthodes et ViewDidUnload de UIViewController ne sont plus appelées dans iOS 6. Dans les versions précédentes d’iOS, ces méthodes ont pu être utilisées par les applications pour enregistrer l’état avant le déchargement d’une vue et nettoyer le code respectivement.

Par exemple, Visual Studio pour Mac créerait une méthode appelée ReleaseDesignerOutlets, illustrée ci-dessous, qui serait ensuite appelée à partir de ViewDidUnload:

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

Toutefois, dans iOS 6, il n’est plus nécessaire d’appeler ReleaseDesignerOutlets.

Pour le code de nettoyage, les applications iOS 6 doivent utiliser DidReceiveMemoryWarning. Toutefois, le code qui appelle Dispose doit être utilisé avec parcimonie et uniquement pour les objets gourmands en mémoire, comme indiqué ci-dessous :

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

Là encore, les appels Dispose comme ci-dessus doivent rarement être nécessaires. En général, la plupart des applications doivent supprimer les gestionnaires d’événements.

Dans le cas de l’enregistrement de l’état, les applications peuvent effectuer cette opération dans ViewWillDisappear et ViewDidDisappear au lieu de ViewWillUnload.

Résolution de l’iPhone 5

Les appareils iPhone 5 ont une résolution de 640 x 1136. Les applications qui ciblaient les versions précédentes d’iOS apparaissent dans la boîte aux lettres lorsqu’elles sont exécutées sur un iPhone 5, comme indiqué ci-dessous :

Les applications qui ciblaient les versions précédentes d’iOS apparaîtront en boîte aux lettres lorsqu’elles sont exécutées sur un iPhone 5

Pour que l’application apparaisse en plein écran sur iPhone 5, ajoutez simplement une image nommée Default-568h@2x.png avec une résolution de 640 x 1136. La capture d’écran suivante montre l’application en cours d’exécution après l’inclusion de cette image :

Cette capture d’écran montre l’application en cours d’exécution après l’inclusion de cette image

Sous-classe UINavigationBar

Dans iOS 6 UINavigationBar peut être sous-classé. Cela permet un contrôle supplémentaire de l’apparence du UINavigationBar. Par exemple, les applications peuvent sous-classer pour ajouter des sous-vues, animer ces vues et modifier les limites du UINavigationBar.

Le code ci-dessous montre un exemple de sous-classe UINavigationBar qui ajoute un 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);
​    }
}

Pour ajouter une sous-classe UINavigationBar à un UINavigationController, utilisez le UINavigationController constructeur qui accepte le type de UINavigationBar et UIToolbar, comme indiqué ci-dessous :

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

L’utilisation de cette UINavigationBar sous-classe entraîne l’affichage image comme illustré dans la capture d’écran suivante :

L’utilisation de cette sous-classe UINavigationBar entraîne l’affichage de l’image comme indiqué dans cette capture d’écran

Orientation de l’interface

Avant iOS 6, les applications pouvaient remplacer ShouldAutorotateToInterfaceOrientation, en retournant true pour toutes les orientations prises en charge par le contrôleur particulier. Par exemple, le code suivant est utilisé pour prendre en charge uniquement portrait :

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

Dans iOS 6 ShouldAutorotateToInterfaceOrientation est déconseillé. Au lieu de cela, les applications peuvent remplacer GetSupportedInterfaceOrientations sur le contrôleur d’affichage racine, comme indiqué ci-dessous :

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

Sur iPad, cette option est définie par défaut sur les quatre orientations si GetSupportedInterfaceOrientation n’est pas implémentée. Sur iPhone et iPod Touch, la valeur par défaut est toutes les orientations à l’exception PortraitUpsideDownde .