Resultados para ''

iPad: primeiro projeto com UISplitView

Escrito por Afonso Junior em 17/05/10 18:30

O iPad roda o mesmo sistema operacional utilizado pelo iPhone e iPod Touch. Isso significa que os desenvolvedores que já estão familiarizados com programação em iPhone são capazes de escrever rapidamente aplicativos para o iPad. Na verdade, a maioria (se não todas) as aplicações do iPhone deve ser executada sem nenhum problema no iPad, embora em um tamanho menor de quadro, com uma opção de aumentar o tamanho dos pixels. No entanto, para realmente fazer pleno uso da tela maior do iPad, você precisa redesenhar sua interface de usuário para ter em conta o espaço extra de tela. O iPhone SDK 3.2, que é necessário para o desenvolvimento para iPad, vem com um novo modelo de aplicação, Split View-based Application, que permite construir aplicações em wide-screen.

O modelo Split View-based permite que você crie uma interface de visualização dividida em sua aplicação. O lado esquerdo da tela exibe uma lista de itens selecionáveis, e o lado direito exibe os detalhes do item selecionado. Este artigo mostrará como desenvolver um aplicativo baseado nesse modelo para o iPad.

Começando o projeto

Na janela de diálogo de novo projeto, escolha o "Split View-based Application". Dê um nome para o seu projeto (o meu será um projeto de Portfolio).

Split View-based Application

Observe na imagem abaixo que além do AppDelegate ele cria mais duas classes: o RootViewController e o DetailViewController. Mais tarde eu explicarei como eles se encaixarão nessa dinâmica toda.

Classes geradas

Mande rodar o projeto (Command + R) e veja como ficam as telas nas figuras abaixo. Quando o iPad está deitado, a lista fica visível à esquerda. Quando em pé, ele aparece como um menu suspenso.

Split View no iPad: paisagem

Split View no iPad: retrato

Olhando o AppDelegate

Se olharmos o código de PortfolioAppDelegate.h,

Código no AppDelegate

podemos ver que ele tem um UISplitViewController. Esse elemento vai "abrigar" dois viewControllers: o RootViewController e o DetailViewController - que, respectivamente, serão a lista com os itens a serem selecionados e a tela que exibe algo de acordo com a seleção da lista.

Na implementação do PortfolioAppDelegate, nenhuma novidade:

Código no AppDelegate (implementação)

Somente adiciona a view do splitViewController na window.

Olhando o XIB

MainWindow no Interface Builder

Abrindo o arquivo MainWindow.xib, podemos ver que ele tem um Split View Controller. Dentro dele, dois elementos: o NavigationController e um view controller (cuja classe é referenciada pela classe DetailViewController no projeto). Dentro do NavigationController,

RootViewController no Interface Builder

temos um Navigation Bar e outro viewController, referenciado pelo RootViewController do projeto.

RootViewController no Interface Builder

No AppDelegate, algo que já era de se esperar:

RootViewController no Interface Builder

todos os elementos com propriedade IBOutlet no PortfolioAppDelegate.h ligados com seus correspondentes no XIB.

Olhando os ViewControllers

Depois de olharmos o XIB, vamos ver como a mágica acontece dentro dos dois viewControllers do projeto. Numa rápida olhada no RootViewController.h

Código do RootViewController

percebemos que ele é filho de um UITableViewController, que servirá para tabelar os valores a serem exibidos na tela. Eu criei o array portfolio que guardará os valores que serão exibidos na tela.

Agora, olhando o código de DetailViewController.h,

Código do DetailViewController

podemos perceber que ele implementa dois protocolos:

  • UIPopoverControllerDelegate: para controlar o popover que irá exibir o conteúdo da tableView do RootViewController quando o iPad estiver em pé (posição retrato);
  • UISplitViewControllerDelegate: para dizer o que fazer (esconder ou exibir) o PopoverView quando o iPad mudar a orientação.

Na implementação, o Xcode gera para o DetailViewController quatro métodos que nos interessam para o nosso exemplo. O primeiro,

Código do DetailViewController

serve para utilização do detailItem dentro da classe. Na declaração da classe ele foi declarado como um id, e a ideia é que ele seja utilizado para popular os valores a serem exibidos na tela. No RootViewController, eu atribuí a ele um NSDictionary com duas chaves: o texto a ser exibido e o nome da imagem a ser mostrada. Mas a ideia é não mexer muito nesse método, e sim no próximo:

Código do DetailViewController

Olhando o código você pode perceber que as propriedades da label e da imagem são alteradas, ou seja, é aqui que parte da "mágica" acontece. Os outros dois métodos são implementações dos protocolos assinados:

Código do DetailViewController

Confesso que mexi quase nada neles. O primeiro é acionado quando a tela é rotacionada para o modo retrato (em pé). E o outro, o contrário: ele é o que faz o RootViewController ser exibido novamente quando o aparelho é posto em modo paisagem.

Enfim, com um código simples já consigo fazer uma aplicação de portfólio. Para facilitar, eu coloquei em dois arquivos .plist a relação entre os nomes das posições na tableView com os arquivos de imagem e com suas descrições. E criei uma classe utilitária para fazer o acesso aos arquivos. Tudo isso você pode consultar baixando o projeto. Abaixo segue algumas telas do projeto.

Exemplos do projeto

Exemplos do projeto

Exemplos do projeto

Exemplos do projeto

Leia também:

A guerra dos tablets está para começar... será?!

Escrito por Felipe Barreto em 16/04/10 18:03

Como uma imagem vale mais que 1000 palavras, começo meus argumentos com um trecho retirado do episódio no qual os Simpsons visitam a loja da "Mapple".

Simpsons na Mapple. Você também age assim nos lançamentos da Apple?

Antes do anúncio do lançamento do iPad - e mais ainda após o lançamento em si - o mercado de tablets virou o foco do momento e os concorrentes, mesmo os que já possuiam o seu produto na rua, começaram a se coçar para conseguir morder a maior fatia possível desse bolo.

Em poucos dias surgiram notícias dos atuais e futuros tablets da Hewlett-Packard, Amazon, Barnes&Noble, Sony, Nokia, Google, Microsoft e até algumas menos conhecidas. Vários deles prometem atributos realmente impressionantes sendo que alguns deles poderiam até dar um banho no iPad em termos de tecnologia. Mas a pergunta que fica é:

Algum deles conseguirá superar o iPad?

Vejam, esta pergunta é capciosa, pois não se trata de quantidade de recursos, desempenho, beleza ou qualquer outro atributo físico. Ela tem a ver com o fato inegável abordado pelo episódio dos Simpsons de onde tirei a imagem lá de cima: a Apple é moda. Ela é tendência, status e tudo mais que há de subjetivo em carregar uma imagem de uma maçã faltando um pedaço pelas ruas. As pessoas sacam o dinheiro da carteira sem pestanejar ao descobrirem que a Apple vai lançar um novo produto.

Se você assistir o episódio acima, ficará óbvio que qualquer esforço de superar o iPad somente pelas funcionalidades será praticamente impossível. O próprio iPad já recebeu diversas críticas técnicas antes e depois do lançamento e nada disso pareceu abalar o frisson dos applemaníacos que esperaram horas nas filas no meio da rua para comprar o aparelho. Até os "menos afortunados" - que não pertecem a terra do Tio Sam - já estão comprando o tablet no mercado paralelo por quase o dobro do preço!!!

Se as empresas lá de cima quiserem realmente competir, devem gerar uma nova experiência e, principalmente, fazer com que seus usuários se sintam especiais por carregarem seus produtos pela rua. Qual delas você aposta que conseguirá?

Leia também:

iPad lançado. O que os desenvolvedores podem esperar?

Escrito por Felipe Barreto em 01/02/10 11:35

No meio de euforia e decepções, o iPad já foi considerado desde uma revolução a simplesmente um "iPod de Itu".

O fato é que, tratando-se de Apple, tudo é possível daqui pra frente: o iPad pode mostrar-se o mais novo "gadget-que-você-não-pode-viver-sem", por ser leve, prático e rápido; ou ainda provar ser apenas um trambolho que ficou no meio do caminho entre um netbook e um celular, mas ainda sim ser um sucesso só pelo fato de ter uma maçã gravada no verso.

E o que os desenvolvedores atuais para iPhone podem fazer?

iPad. O que os desenvolvedores podem esperar?

A Apple foi bem inteligente em concentrar esforços para manter a compatiilidade do iPad com as Apps pré-existentes de modo que elas possam ser executadas em dois modos: Resolução original, ou seja, a App vai aparecer em 320x480 como um mini-game na tela do iPad; ou em Tamanho dobrado para se adaptar melhor a tela de 1024x768 (com o risco que prejudicar a qualidade das imagens).

Além disso, boa parte dos recursos foi mantida como acelerômetro, bússula, wi-fi, bluetooth, microfone, caixas de som e GPS (esta última somente no modelo 3G).

Sendo assim, restam duas alternativas para nós, desenvolvedores:

1. Fazer nada

Sim, nada. Podemos esperar o barco mostrar que vai tomar alguma direção realmente interessante e ecomizar tempo e dinheiro. De uma forma ou de outra, nossas Apps já são "compatíveis" com o iPad.

2. Investir

Por outro lado, podemos acreditar que o Tio Jobs e Cia. acertaram mais uma vez e correr para chegar na frente na nova leva de Apps que se tornarão viáveis simplesmente pelo fato de poderem explorar uma tela maior.

Se optar pelo segundo caminho, eis alguns pontos que devem ser observados.

Compatibilidade

Como dito, nós podemos desenvolver Apps para iPhone e contar com o modo de compatibilidade disponível no iPad, mas temos mais 2 opções:

  • Apps exclusivas para iPad: utilizando os novos recursos visuais bem como o tamanho da nova tela, podemos fazer Apps que rodem somente no iPad;
  • Apps "Universais": Serão Apps preparadas para identificar cada dispositivo e apresentar a interface coerentemente. "Universal" foi o termo escolhido pela própria Apple - e faz sentido se você considerar que o universo cabe dentro de uma maçã :D

Layout

Com o iPad, poderemos colocar muito mais informação em uma mesma tela. Com isso, uma mesma App poderia ter 5 telas quando executada no iPhone, mas apenas 2 quando executada no iPad. Caberá a nós decidir quando usar essa estratégia.

Multitouch

No iPhone, é comum explorarmos 2 ou até 3 toques simultâneos na tela, mas no iPad, mais uma vez devido a sua tela maior, poderíamos explorar 4 ou 5 toques (ou até mais, afinal a maioria dos usuários tem 10 dedos e mais algumas partes do corpo disponíveis :D).

Diferenças de hardware

Esta não é exatamente nova, uma vez que modelos de iPhone e iPods Touch já apresentam diferenças como GPS, câmera, bluetooh, etc. O lance é fazer nossas aplicações tratarem com elegância as deficiências de cada aparelho evitando que a App feche na cara do usuário e oferecendo alternativas aos recursos ausentes.

Paciência, estudo e criatividade

Embora os novos recursos visuais vão requerer de nós mais aprendizado e novas preocupações, se soubermos explorá-los, poderemos criar verdadeiras inovações na área de aplicações para dispositivos móveis. Espero que não apenas a Mobits, mas todas as iniciativas brasileiras consigam responder a altura caso o iPad venha a revolucionar o mercado como o iPhone fez e convoque os desenvolvedores a criar soluções realmente interessantes.