Introdução ao iOS 6
O iOS 6 inclui uma variedade de novas tecnologias para o desenvolvimento de aplicativos, que o Xamarin.iOS 6 traz para desenvolvedores de C#.
Com o iOS 6 e o Xamarin.iOS 6, os desenvolvedores agora têm uma grande variedade de recursos à sua disposição para criar aplicativos iOS, incluindo aqueles direcionados ao iPhone 5. Este documento lista alguns dos novos recursos mais interessantes disponíveis e links para artigos para cada tópico. Além disso, aborda algumas mudanças que serão importantes à medida que os desenvolvedores migrarem para o iOS 6 e a nova resolução do iPhone 5.
Introdução aos modos de exibição de coleção
Os Modos de Exibição de Coleção permitem que o conteúdo seja exibido usando layouts arbitrários. Eles permitem criar facilmente layouts em forma de grade prontos para uso, ao mesmo tempo em que oferecem suporte a layouts personalizados. Para obter mais informações, consulte o guia Introdução aos modos de exibição de coleção.
Introdução ao PassKit
A estrutura do PassKit permite que os aplicativos interajam com passes digitais gerenciados no aplicativo Passbook. Para obter mais informações, consulte o guia Introdução ao Kit de Passe.
Introdução ao EventKit
A estrutura do EventKit fornece uma maneira de acessar os dados de Calendários, Eventos de Calendário e Lembretes que o Banco de Dados de Calendário armazena. O acesso aos calendários e eventos do calendário está disponível desde o iOS 4, mas o iOS 6 agora expõe o acesso aos dados de lembretes. Para obter mais informações, consulte o guia Introdução ao EventKit.
Introdução ao Quadro Social
O Social Framework fornece uma API unificada para interagir com redes sociais, incluindo Twitter e Facebook, bem como SinaWeibo para usuários na China. Para obter mais informações, consulte o guia Introdução ao Social Framework .
Alterações no StoreKit
A Apple introduziu dois novos recursos no Store Kit: comprar e baixar conteúdo do iTunes ou da App Store de dentro do seu aplicativo e hospedar seus arquivos de conteúdo para compras no aplicativo!. Para obter mais informações, consulte o guia Alterações no Store Kit .
Outras alterações
ViewWillUnload e ViewDidUnload descontinuados
Os ViewWillUnload
métodos e ViewDidUnload
de UIViewController
não são mais chamados no iOS 6. Nas versões anteriores do iOS, esses métodos podem ter sido usados por aplicativos para salvar o estado antes que uma exibição seja descarregada e limpar o código, respectivamente.
Por exemplo, o Visual Studio para Mac criaria um método chamado ReleaseDesignerOutlets
, mostrado abaixo, que seria chamado de ViewDidUnload
:
void ReleaseDesignerOutlets ()
{
if (myOutlet != null) {
myOutlet.Dispose ();
myOutlet = null;
}
}
No entanto, no iOS 6, não é mais necessário chamar ReleaseDesignerOutlets
.
Para código de limpeza, os aplicativos do iOS 6 devem usar DidReceiveMemoryWarning
. No entanto, o código que chama Dispose
deve ser usado com moderação e apenas para objetos com uso intensivo de memória, conforme mostrado abaixo:
if (myImageView != null){
if (myImageView.Superview == null){
myImageView.Dispose();
myImageView = null;
}
}
Novamente, chamar Dispose
como acima raramente deve ser necessário. Em geral, a maioria dos aplicativos deve fazer é remover manipuladores de eventos.
Para o caso de salvar o estado, os aplicativos podem executar isso em ViewWillDisappear
e ViewDidDisappear
em vez de ViewWillUnload
.
Resolução do iPhone 5
Os dispositivos iPhone 5 têm uma resolução de 640x1136. Os aplicativos direcionados a versões anteriores do iOS aparecerão em letterbox quando executados em um iPhone 5, conforme mostrado abaixo:
Para que o aplicativo apareça em tela cheia no iPhone 5, basta adicionar uma imagem com resolução Default-568h@2x.png
de 640x1136. A captura de tela a seguir mostra o aplicativo em execução após a inclusão dessa imagem:
Subclasse UINavigationBar
No iOS 6 UINavigationBar
pode ser subclassificado. Isso permite um controle adicional da aparência do UINavigationBar
. Por exemplo, os aplicativos podem criar subclasses para adicionar subexibições, animar essas exibições e modificar os limites do UINavigationBar
.
O código abaixo mostra um exemplo de uma subclasse UINavigationBar
que adiciona um 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 adicionar uma subclasse UINavigationBar
a um UINavigationController
, use o UINavigationController
construtor que usa o tipo de e UINavigationBar
UIToolbar
, conforme mostrado abaixo:
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
O uso dessa UINavigationBar
subclasse faz com que a exibição de imagem seja exibida, conforme mostrado na captura de tela a seguir:
Orientação da interface
Antes do iOS 6, os aplicativos podiam substituir ShouldAutorotateToInterfaceOrientation
, retornando true para qualquer orientação compatível com o controlador específico. Por exemplo, o código a seguir seria usado para dar suporte apenas a retrato:
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
No iOS 6 ShouldAutorotateToInterfaceOrientation
está obsoleto.
Em vez disso, os aplicativos podem substituir GetSupportedInterfaceOrientations
o controlador de exibição raiz, conforme mostrado abaixo:
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
No iPad, o padrão é todas as quatro orientações se GetSupportedInterfaceOrientation
não for implementado. No iPhone e iPod Touch, o padrão é todas as orientações, exceto PortraitUpsideDown
.