Condividi tramite


Introduzione a iOS 6

iOS 6 include un'ampia gamma di nuove tecnologie per lo sviluppo di app, che Xamarin.iOS 6 offre agli sviluppatori C#.

The iOS 6 logo

Con iOS 6 e Xamarin.iOS 6, gli sviluppatori hanno ora a disposizione una vasta gamma di funzionalità per creare applicazioni iOS, incluse quelle destinate a i Telefono 5. Questo documento elenca alcune delle nuove funzionalità più interessanti disponibili e collegamenti ad articoli per ogni argomento. Inoltre tocca un paio di modifiche che saranno importanti man mano che gli sviluppatori passano a iOS 6 e la nuova risoluzione di i Telefono 5.

Introduzione alle visualizzazioni della raccolta

Le visualizzazioni raccolta consentono di visualizzare il contenuto usando layout arbitrari. Consentono di creare facilmente layout simili a griglia predefiniti, supportando anche layout personalizzati. Per altre informazioni, vedere la guida Introduzione alle visualizzazioni della raccolta.

Introduction to PassKit (Introduzione a PassKit)

Il framework PassKit consente alle applicazioni di interagire con i passaggi digitali gestiti nell'app Passbook. Per altre informazioni, vedere la guida Introduttiva a Pass Kit.

Introduzione a EventKit

Il framework EventKit consente di accedere ai dati calendari, eventi del calendario e promemoria archiviati dal database del calendario. L'accesso ai calendari e agli eventi del calendario è disponibile da iOS 4, ma iOS 6 ora espone l'accesso ai dati dei promemoria. Per altre informazioni, vedere la guida I ntroduction to EventKit (Introduction to EventKit ).

Introduzione al framework sociale

Social Framework offre un'API unificata per interagire con i social network, tra cui Twitter e Facebook, nonché SinaWeibo per gli utenti in Cina. Per altre informazioni, vedere la guida Introduttiva al Framework sociale.

Modifiche di StoreKit

Apple ha introdotto due nuove funzionalità nello Store Kit: l'acquisto e il download di contenuti iTunes o App Store dall'interno dell'app e l'hosting dei file di contenuto per gli acquisti in-app!. Per altre informazioni, vedere la guida modifiche apportate allo Store Kit .

Altre modifiche

ViewWillUnload e ViewDidUnload Deprecato

I ViewWillUnload metodi e ViewDidUnload di UIViewController non vengono più chiamati in iOS 6. Nelle versioni precedenti di iOS questi metodi possono essere stati usati dalle applicazioni per salvare lo stato prima dello scaricamento di una vista e del codice di pulizia rispettivamente.

Ad esempio, Visual Studio per Mac creerebbe un metodo denominato ReleaseDesignerOutlets, illustrato di seguito, che verrebbe chiamato da ViewDidUnload:

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

Tuttavia, in iOS 6 non è più necessario chiamare ReleaseDesignerOutlets.

Per il codice di pulizia, le applicazioni iOS 6 devono usare DidReceiveMemoryWarning. Tuttavia, il codice che chiama Dispose deve essere usato con moderazione e solo per gli oggetti a elevato utilizzo di memoria, come illustrato di seguito:

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

Anche in questo caso, chiamare Dispose come sopra dovrebbe essere raramente necessario. In generale, la maggior parte delle applicazioni deve eseguire consiste nel rimuovere i gestori eventi.

Per il salvataggio dello stato, le applicazioni possono eseguire questa operazione in ViewWillDisappear e ViewDidDisappear invece di ViewWillUnload.

i Telefono 5 Risoluzione

i Telefono 5 dispositivi hanno una risoluzione 640x1136. Le applicazioni destinate alle versioni precedenti di iOS verranno visualizzate nella casella delle lettere quando vengono eseguite in un i Telefono 5, come illustrato di seguito:

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

Affinché l'applicazione venga visualizzata a schermo intero in i Telefono 5, è sufficiente aggiungere un'immagine denominata Default-568h@2x.png con risoluzione 640x1136. Lo screenshot seguente mostra l'applicazione in esecuzione dopo l'inserimento di questa immagine:

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

Sottoclasse UINavigationBar

In iOS 6 UINavigationBar può essere sottoclassato. In questo modo è possibile controllare ulteriormente l'aspetto dell'oggetto UINavigationBar. Ad esempio, le applicazioni possono sottoclasse per aggiungere visualizzazioni secondarie, animare tali visualizzazioni e modificare i limiti di UINavigationBar.

Il codice seguente mostra un esempio di sottoclassato UINavigationBar che aggiunge un oggetto 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);
​    }
}

Per aggiungere una sottoclassata UINavigationBar a un UINavigationControlleroggetto , usare il UINavigationController costruttore che accetta il tipo di UINavigationBar e UIToolbar, come illustrato di seguito:

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

L'uso di questa UINavigationBar sottoclasse comporta la visualizzazione immagine visualizzata come illustrato nello screenshot seguente:

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

Orientamento dell'interfaccia

Prima delle applicazioni iOS 6 poteva eseguire l'override ShouldAutorotateToInterfaceOrientationdi , restituendo true per qualsiasi orientamento supportato dal controller specifico. Ad esempio, il codice seguente verrà usato per supportare solo verticale:

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

In iOS 6 ShouldAutorotateToInterfaceOrientation è deprecato. Le applicazioni possono invece eseguire l'override GetSupportedInterfaceOrientations nel controller di visualizzazione radice, come illustrato di seguito:

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

In iPad, questo valore predefinito è tutti e quattro gli orientamenti se GetSupportedInterfaceOrientation non viene implementato. In i Telefono e iPod Touch, il valore predefinito è tutti gli orientamenti tranne PortraitUpsideDown.