Introducción a iOS 6
iOS 6 incluye una variedad de nuevas tecnologías para desarrollar aplicaciones, que Xamarin.iOS 6 lleva a los desarrolladores de C#.
Con iOS 6 y Xamarin.iOS 6, los desarrolladores ahora tienen una gran capacidad a su disposición para crear aplicaciones iOS, incluidas las que tienen como destino iPhone 5. En este documento se enumeran algunas de las nuevas características más interesantes que están disponibles y los vínculos a artículos de cada tema. Además, toca un par de cambios que serán importantes a medida que los desarrolladores se mueven a iOS 6 y la nueva resolución de iPhone 5.
Introducción a las vistas de colección
Las vistas de colección permiten mostrar contenido mediante diseños arbitrarios. Permiten crear fácilmente diseños similares a la cuadrícula de fábrica, a la vez que admiten diseños personalizados. Para obtener más información, consulte la guía Introducción a las vistas de colección.
Introduction to PassKit (Introducción a PassKit)
El marco PassKit permite que las aplicaciones interactúen con pases digitales administrados en la aplicación Passbook. Para obtener más información, consulte la guía Introduction to Pass Kit.
Introducción a EventKit
El marco EventKit proporciona una manera de acceder a los datos calendarios, eventos de calendario y recordatorios que almacena la base de datos de calendario. El acceso a los calendarios y eventos de calendario ha estado disponible desde iOS 4, pero iOS 6 ahora expone el acceso a los datos de recordatorios. Para obtener más información, consulte la guía I ntroduction to EventKit (I ntroduction to EventKit ).
Introducción al marco social
Social Framework proporciona una API unificada para interactuar con las redes sociales, como Twitter y Facebook, así como SinaWeibo para los usuarios de China. Para obtener más información, consulte la guía Introducción al marco social.
Cambios en StoreKit
Apple ha introducido dos nuevas características en el kit de la tienda: comprar y descargar contenido de iTunes o App Store desde dentro de la aplicación, y hospedar los archivos de contenido para las compras desde la aplicación. Para obtener más información, consulte la guía Cambios en el kit de la tienda.
Otros cambios
ViewWillUnload y ViewDidUnload en desuso
Los métodos ViewWillUnload
y ViewDidUnload
de UIViewController
ya no se llaman en iOS 6. En versiones anteriores de iOS, las aplicaciones pueden haber usado estos métodos para guardar el estado antes de descargar una vista y limpiar el código, respectivamente.
Por ejemplo, Visual Studio para Mac crearía un método denominado ReleaseDesignerOutlets
, que se muestra a continuación, al que se llamaría desde ViewDidUnload
:
void ReleaseDesignerOutlets ()
{
if (myOutlet != null) {
myOutlet.Dispose ();
myOutlet = null;
}
}
Sin embargo, en iOS 6, ya no es necesario llamar a ReleaseDesignerOutlets
.
Para el código de limpieza, las aplicaciones de iOS 6 deben usar DidReceiveMemoryWarning
. Sin embargo, el código que llama Dispose
debe usarse con moderación y solo para objetos que consumen mucha memoria, como se muestra a continuación:
if (myImageView != null){
if (myImageView.Superview == null){
myImageView.Dispose();
myImageView = null;
}
}
De nuevo, llamar Dispose
como antes rara vez debe ser necesario. En general, la mayoría de las aplicaciones deben hacer es quitar controladores de eventos.
En el caso de guardar el estado, las aplicaciones pueden realizar esto en ViewWillDisappear
y ViewDidDisappear
en lugar de ViewWillUnload
.
Resolución de iPhone 5
Los dispositivos iPhone 5 tienen una resolución de 640x1136. Las aplicaciones destinadas a versiones anteriores de iOS aparecerán en la bandeja de letras cuando se ejecuten en un iPhone 5, como se muestra a continuación:
Para que la aplicación aparezca en pantalla completa en iPhone 5, basta con agregar una imagen denominada Default-568h@2x.png
tener una resolución de 640x1136. En la captura de pantalla siguiente se muestra la aplicación que se ejecuta después de incluir esta imagen:
Subclase UINavigationBar
En iOS 6 UINavigationBar
se puede subclasificar. Esto permite un control adicional de la apariencia de UINavigationBar
. Por ejemplo, las aplicaciones pueden subclasificar para agregar subvistas, animar esas vistas y modificar los límites del UINavigationBar
.
El código siguiente muestra un ejemplo de una subclase UINavigationBar
que agrega 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);
}
}
Para agregar una subclase UINavigationBar
a UINavigationController
, use el constructor UINavigationController
que toma el tipo de UINavigationBar
y UIToolbar
, como se muestra a continuación:
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
El uso de esta subclase UINavigationBar
da como resultado que la vista de imagen se muestre como se muestra en la captura de pantalla siguiente:
Orientación de la interfaz
Antes de las aplicaciones de iOS 6 podían invalidar ShouldAutorotateToInterfaceOrientation
, devolviendo true para cualquier orientación que admita el controlador determinado. Por ejemplo, el código siguiente se usaría para admitir solo vertical:
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
En iOS 6 ShouldAutorotateToInterfaceOrientation
está en desuso.
En su lugar, las aplicaciones pueden invalidar GetSupportedInterfaceOrientations
en el controlador de vista raíz, como se muestra a continuación:
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
En iPad, este valor predeterminado es las cuatro orientaciones si GetSupportedInterfaceOrientation
no se implementa. En iPhone y iPod Touch, el valor predeterminado es todas las orientaciones excepto PortraitUpsideDown
.