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#.
Con iOS 6 e Xamarin.iOS 6, gli sviluppatori hanno ora una vasta gamma di capacità a disposizione per creare applicazioni iOS, incluse quelle destinate a iPhone 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 iPhone 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 (I ntroduction 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
.
Risoluzione iPhone 5
I dispositivi iPhone 5 hanno una risoluzione 640x1136. Le applicazioni destinate alle versioni precedenti di iOS verranno visualizzate nella casella di posta in arrivo quando vengono eseguite su un iPhone 5, come illustrato di seguito:
Affinché l'applicazione venga visualizzata a schermo intero su iPhone 5, è sufficiente aggiungere un'immagine denominata Default-568h@2x.png
con una risoluzione di 640x1136. Lo screenshot seguente mostra l'applicazione in esecuzione dopo l'inserimento di questa immagine:
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 UINavigationController
oggetto , 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:
Orientamento dell'interfaccia
Prima delle applicazioni iOS 6 poteva eseguire l'override ShouldAutorotateToInterfaceOrientation
di , 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. Su iPhone e iPod Touch, il valore predefinito è tutti gli orientamenti tranne PortraitUpsideDown
.