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#.

O logotipo do iOS 6

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:

Aplicativos direcionados a versões anteriores do iOS aparecerão em letterbox quando executados em um iPhone 5

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:

Esta captura de tela 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:

O uso dessa subclasse UINavigationBar faz com que o modo de exibição de imagem seja exibido, conforme mostrado nesta captura de tela

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.