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 C#.
Com o iOS 6 e o Xamarin.iOS 6, os desenvolvedores agora têm uma grande quantidade de capacidade à sua disposição para criar aplicativos iOS, incluindo os destinados 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, ele toca em algumas alterações que serão importantes à medida que os desenvolvedores passarem para o iOS 6 e a nova resolução do iPhone 5.
Introdução aos modos de exibição de coleção
As Exibições de Coleção permitem que o conteúdo seja exibido usando layouts arbitrários. Eles permitem criar facilmente layouts semelhantes à grade prontos para uso, ao mesmo tempo em que dão suporte a layouts personalizados. Para obter mais informações, confira o guia Introdução às Exibições de Coleção .
Introdução ao PassKit
A estrutura do PassKit permite que os aplicativos interajam com passagens digitais gerenciadas no aplicativo Passbook. Para obter mais informações, confira o guia Introdução ao Kit de Passagem.
Introdução ao EventKit
A estrutura EventKit fornece uma maneira de acessar os dados Calendários, Eventos de Calendário e Lembretes armazenados pelo Banco de Dados de Calendário. O acesso aos calendários e eventos de 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 Introduction to EventKit .
Introdução ao Social Framework
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, confira o guia Introdução ao Quadro Social .
Alterações no StoreKit
A Apple introduziu dois novos recursos no Store Kit: comprar e baixar o iTunes ou App Store conteúdo de dentro de seu aplicativo e hospedar seus arquivos de conteúdo para compras no aplicativo!. Para obter mais informações, confira o guia Alterações no Kit de Loja .
Outras alterações
ViewWillUnload e ViewDidUnload preteridos
Os ViewWillUnload
métodos e ViewDidUnload
de UIViewController
não são mais chamados no iOS 6. Em 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 o código de limpeza, respectivamente.
Por exemplo, 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 640x1136. Os aplicativos direcionados às versões anteriores do iOS aparecerão em caixa de correio quando executados em um iPhone 5, conforme mostrado abaixo:
Para que o aplicativo apareça em tela inteira no iPhone 5, basta adicionar uma imagem chamada Default-568h@2x.png
com uma resolução de 640x1136. A captura de tela a seguir mostra o aplicativo em execução depois que essa imagem foi incluída:
Subclasse UINavigationBar
No iOS 6 UINavigationBar
pode ser subclasse. Isso permite controle adicional da aparência do UINavigationBar
. Por exemplo, os aplicativos podem subclasse para adicionar subvisõ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 UINavigationBar
e UIToolbar
, conforme mostrado abaixo:
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
O uso dessa UINavigationBar
subclasse resulta na exibição de imagem sendo 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 quaisquer orientações com suporte do controlador específico. Por exemplo, o código a seguir seria usado para dar suporte apenas ao retrato:
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
No iOS 6 ShouldAutorotateToInterfaceOrientation
foi preterido.
Em vez disso, os aplicativos podem substituir GetSupportedInterfaceOrientations
no controlador de exibição raiz, conforme mostrado abaixo:
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
No iPad, esse padrão será todas as quatro orientações se GetSupportedInterfaceOrientation
não for implementado. No iPhone e no iPod Touch, o padrão é todas as orientações, exceto PortraitUpsideDown
.