<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>Mobits - Blog</title>
  <id>tag:www.mobits.com.br,2012:mephisto/blog</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  
  <link href="http://www.mobits.com.br/blog" rel="alternate" type="text/html" />
  <updated>2012-02-08T16:38:21Z</updated>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Mobits-Blog" /><feedburner:info uri="mobits-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Hildi</name>
    </author>
    <id>tag:www.mobits.com.br,2012-02-08:799</id>
    <published>2012-02-08T16:33:00Z</published>
    <updated>2012-02-08T16:38:21Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="aplicativos para celular" />
    <category term="iphone" />
    <category term="mobits plaza" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/blwZP3pB9f4/conheca-o-mobits-plaza-solucao-mobile-para-shoppings-centers" rel="alternate" type="text/html" />
    <title>Conheça o Mobits Plaza: solução mobile para shoppings centers</title>
<summary type="html">&lt;p&gt;A Mobits acaba de lançar um novo produto voltado ao &lt;a href="http://www.portaldoshopping.com.br/sobreosetor.asp?codAreaMae=10&amp;amp;amp;codArea=13&amp;amp;amp;codConteudo=1"&gt;crescente&lt;/a&gt; mercado de shoppings: o &lt;a href="http://www.mobitsplaza.com.br/"&gt;Mobits Plaza&lt;/a&gt;.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;A Mobits acaba de lançar um novo produto voltado ao &lt;a href="http://www.portaldoshopping.com.br/sobreosetor.asp?codAreaMae=10&amp;amp;amp;codArea=13&amp;amp;amp;codConteudo=1"&gt;crescente&lt;/a&gt; mercado de shoppings: o &lt;a href="http://www.mobitsplaza.com.br/"&gt;Mobits Plaza&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img title="Mobits Plaza" src="http://www.mobits.com.br/assets/2012/2/7/1.png" alt="Mobits Plaza" /&gt;&lt;/p&gt;

&lt;p&gt;O &lt;a href="http://www.mobitsplaza.com.br/"&gt;Mobits Plaza&lt;/a&gt; permite que qualquer shopping possa ter seu próprio aplicativo para &lt;em&gt;smartphones&lt;/em&gt;,  personalizado de acordo com sua identidade visual. Dentre as funcionalidades oferecidas no &lt;em&gt;app&lt;/em&gt;, destacam-se: consulta de lojas, promoções, notícias, mapas, estacionamento, alertas de promoções, vitrine de lojas, cardápio dos restaurantes e lista de desejos.&lt;/p&gt;

&lt;p&gt;Para gerenciar esse conteúdo, a solução oferece ainda uma ferramenta &lt;em&gt;online&lt;/em&gt;. Desta forma, o shopping e os lojistas podem manter as informações sempre atualizadas em tempo real.&lt;/p&gt;

&lt;p&gt;O shopping carioca &lt;a href="http://www.botafogopraiashopping.com.br/"&gt;Botafogo Praia Shopping&lt;/a&gt; já está utilizando o &lt;a href="http://www.mobitsplaza.com.br/"&gt;Mobits Plaza&lt;/a&gt;. O aplicativo está disponível gratuitamente na App Store. Para conhecer, acesse &lt;a href="http://itunes.apple.com/us/app/botafogo-praia-shopping/id488109740?mt=8"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quer saber mais sobre o Mobits Plaza, acesse: &lt;a href="http://www.mobitsplaza.com.br/"&gt;http://www.mobitsplaza.com.br/&lt;/a&gt;.&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/7/29/the-hungry-pets-primeiro-jogo-da-mobits-para-ipad"&gt;The Hungry Pets: primeiro jogo da Mobits para iPad&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/10/7/mobits-button-soccer-finalmente-chega-ao-ipad"&gt;Mobits Button Soccer finalmente chega ao iPad!&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/blwZP3pB9f4" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/2/8/conheca-o-mobits-plaza-solucao-mobile-para-shoppings-centers</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Felipe Barreto</name>
    </author>
    <id>tag:www.mobits.com.br,2012-02-03:797</id>
    <published>2012-02-03T23:27:00Z</published>
    <updated>2012-02-03T23:27:49Z</updated>
    <category term="Blog" />
    <category term="desenvolvimento" />
    <category term="iphone sdk" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/FGsC7SEbOTo/usando-json-no-ios-5" rel="alternate" type="text/html" />
    <title>Usando JSON no iOS 5</title>
<summary type="html">&lt;p&gt;Se você precisar fazer &lt;em&gt;parsing&lt;/em&gt; de JSON em aplicativos para versões inferiores à 5.0 do iOS, então nós já &lt;a href="http://mobits.com.br/2010/9/6/usando-json-em-seus-projetos-iphone"&gt;demos a dica&lt;/a&gt;. Agora, se o seu aplicativo depender apenas do iOS 5 ou superior, então sua vida ficou mais simples.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Se você precisar fazer &lt;em&gt;parsing&lt;/em&gt; de JSON em aplicativos para versões inferiores à 5.0 do iOS, então nós já &lt;a href="http://mobits.com.br/2010/9/6/usando-json-em-seus-projetos-iphone"&gt;demos a dica&lt;/a&gt;. Agora, se o seu aplicativo depender apenas do iOS 5 ou superior, então sua vida ficou mais simples.&lt;/p&gt;
&lt;p&gt;Com a chegada do iOS 5, foi liberada para nós a classe &lt;em&gt;&lt;a href="https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html"&gt;NSJSONSerialization&lt;/a&gt;&lt;/em&gt;. Não precisa fazer nenhum &lt;em&gt;import&lt;/em&gt; especial, pois ela vem no &lt;em&gt;Foundation framework&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;O funcionamento é muito semelhante a da &lt;a href="http://mobits.com.br/2010/9/6/usando-json-em-seus-projetos-iphone"&gt;solução antiga&lt;/a&gt;, ou seja, a partir de um conteúdo JSON, o &lt;em&gt;NSJSONSerialization&lt;/em&gt; cria &lt;em&gt;NSArrays&lt;/em&gt;, &lt;em&gt;NSDictionaries&lt;/em&gt;, &lt;em&gt;NSStrings&lt;/em&gt;, &lt;em&gt;NSNumbers&lt;/em&gt; e &lt;em&gt;NSNulls&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Supondo que você tenha o JSON abaixo em um &lt;em&gt;NSData&lt;/em&gt; (de um arquivo ou baixado de algum site):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[
    {
        "nome": "Cine Mobits",
        "ano_lancamento": 2008,
        "ipad": false,
        "link": "http://www.cinemobits.com.br"
    },
    {
        "nome": "Mobits Button Soccer",
        "ano_lancamento": 2009,
        "ipad": false,
        "link": "http://www.mobitsbuttonsoccer.com"
    },
    {
        "nome": "The Lost Puzzles",
        "ano_lancamento": 2010,
        "ipad": false,
        "link": "http://www.thelostpuzzles.com"
    },
    {
        "nome": "The Hungry Pets",
        "ano_lancamento": 2011,
        "ipad": true,
        "link": "http://www.thehungrypets.com"
    }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Fazer o seu &lt;em&gt;parsing&lt;/em&gt; é simples:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSArray *projetosMobits = [NSJSONSerialization JSONObjectWithData:json options:0 error:&amp;amp;erro];  

NSDictionary *cineMobits = [projetosMobits objectAtIndex:0];
NSString *nome = [cineMobits objectForKey:@"nome"];
NSInteger *ano_lancamento = [[cineMobits objectForKey:@"ano_lancamento"] intValue];
BOOL *ipad = [[cineMobits objectForKey:@"ipad"] boolValue];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você tiver o JSON como um &lt;em&gt;Stream&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSArray *projetosMobits = [NSJSONSerialization JSONObjectWithStream:jsonStream options:0 error:&amp;amp;erro];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Em ambos os métodos acima, esse parâmetro &lt;em&gt;options&lt;/em&gt; aceita uma &lt;em&gt;bitmask&lt;/em&gt; com as opções:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NSJSONReadingMutableContainers&lt;/strong&gt;: NSArrays e NSDictionaries são recuperados como &lt;em&gt;mutable&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NSJSONReadingMutableLeaves&lt;/strong&gt;: Valores NSString são recuperados como &lt;em&gt;mutable&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NSJSONReadingAllowFragments&lt;/strong&gt;: Permite que o json não seja apenas um &lt;em&gt;dictionary&lt;/em&gt; ou &lt;em&gt;array&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essa última opção é importante caso o seu JSON possa ser apenas uma string, um número, um booleano, ou até um nulo. Ex:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;null
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se &lt;em&gt;NSJSONReadingAllowFragments&lt;/em&gt; não for fornecido, o &lt;em&gt;parser&lt;/em&gt; reportará um erro e não fará o &lt;em&gt;parsing&lt;/em&gt; corretamente.&lt;/p&gt;

&lt;p&gt;Até a próxima!&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2010/9/6/usando-json-em-seus-projetos-iphone"&gt;Usando JSON em seus projetos iPhone&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/9/9/2-dicas-simples-para-trabalhar-com-nsnull"&gt;2 dicas simples para trabalhar com NSNull&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2010/7/28/usando-xml-em-seus-projetos-iphone"&gt;Usando XML em seus projetos iPhone&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/FGsC7SEbOTo" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/2/3/usando-json-no-ios-5</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Karin</name>
    </author>
    <id>tag:www.mobits.com.br,2012-02-03:795</id>
    <published>2012-02-03T21:11:00Z</published>
    <updated>2012-02-03T22:00:49Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="android" />
    <category term="aplicativos para celular" />
    <category term="vc globo.com" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/onxqSfyLzvc/vc-globo-com-aplicativo-de-colaboracao-para-android" rel="alternate" type="text/html" />
    <title>VC Globo.com: aplicativo de colaboração para Android</title>
<summary type="html">&lt;p&gt;Desenvolvido pela Mobits, a Globo.com lançou no dia 31/01 o seu aplicativo de colaboração para &lt;em&gt;smartphones&lt;/em&gt; Android.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Desenvolvido pela Mobits, a Globo.com lançou no dia 31/01 o seu aplicativo de colaboração para &lt;em&gt;smartphones&lt;/em&gt; Android.&lt;/p&gt;
&lt;p&gt;O aplicativo &lt;a href="http://g1.globo.com/vc-no-g1/noticia/2011/05/saiba-como-enviar-fotos-e-videos-ao-g1-pelo-iphone.html"&gt;VC Globo.com&lt;/a&gt; é uma ferramenta para enviar fotos, vídeos e textos, que poderão ser utilizados na cobertura da Globo.com pela internet.&lt;/p&gt;

&lt;p&gt;&lt;img title="VC Globo.com" src="http://www.mobits.com.br/assets/2012/2/3/inicio.png" alt="VC Globo.com" /&gt;&lt;/p&gt;

&lt;p&gt;E ele é bem simples, basta selecionar o canal desejado, escolher as fotos e/ou vídeos que quer enviar, cadastrar um título e uma descrição sobre a sua colaboração e pronto! Você terá contribuído para a equipe da Globo.com.
Para envio de colaborações em alguns canais é necessário o cadastro Globo.com.&lt;/p&gt;

&lt;p&gt;&lt;img title="Colabore" src="http://www.mobits.com.br/assets/2012/2/3/colabore.png" alt="Colabore" /&gt;&lt;/p&gt;

&lt;p&gt;As suas colaborações são salvas no aplicativo. É só conferir na aba &lt;strong&gt;Meus Envios&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img title="Meus Envios" src="http://www.mobits.com.br/assets/2012/2/3/envios.png" alt="Meus Envios" /&gt;&lt;/p&gt;

&lt;p&gt;VC Globo.com já está disponível no &lt;a href="https://market.android.com/details?id=br.com.mobits.colaborativo"&gt;Android Market&lt;/a&gt;, é gratuito e necessita do Android 2.0 ou superior. Contribuam!&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2012/1/24/zurbb-descubra-o-que-esta-acontecendo-em-sua-cidade"&gt;Zurbb: descubra o que está acontecendo em sua cidade!&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/onxqSfyLzvc" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/2/3/vc-globo-com-aplicativo-de-colaboracao-para-android</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Afonso Junior</name>
    </author>
    <id>tag:www.mobits.com.br,2012-02-02:792</id>
    <published>2012-02-02T15:18:00Z</published>
    <updated>2012-02-02T15:18:23Z</updated>
    <category term="Blog" />
    <category term="desenvolvimento" />
    <category term="iphone sdk" />
    <category term="objective-c" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/hMke3jdBQvU/blocos-de-codigo-em-objective-c" rel="alternate" type="text/html" />
    <title>Blocos de código em Objective-C </title>
<summary type="html">&lt;p&gt;Na versão 4 do iOS foi introduzido o conceito de &lt;strong&gt;bloco de código&lt;/strong&gt; na linguagem. Para aqueles que não estão habituados com o conceito, um bloco de código é um conjunto de instruções que podem ser passadas adiante para serem executadas em um momento oportuno. Para uma leitura mais detalhada, basta ler a &lt;a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29"&gt;página da Wikipédia (em inglês)&lt;/a&gt;, que fala mais a respeito.&lt;/p&gt;

&lt;p&gt;Nesse &lt;em&gt;post&lt;/em&gt; vamos entender os casos mais básicos de bloco e saber como utilizá-los em nossos códigos&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Na versão 4 do iOS foi introduzido o conceito de &lt;strong&gt;bloco de código&lt;/strong&gt; na linguagem. Para aqueles que não estão habituados com o conceito, um bloco de código é um conjunto de instruções que podem ser passadas adiante para serem executadas em um momento oportuno. Para uma leitura mais detalhada, basta ler a &lt;a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29"&gt;página da Wikipédia (em inglês)&lt;/a&gt;, que fala mais a respeito.&lt;/p&gt;

&lt;p&gt;Nesse &lt;em&gt;post&lt;/em&gt; vamos entender os casos mais básicos de bloco e saber como utilizá-los em nossos códigos&lt;/p&gt;
&lt;h3&gt;Introdução&lt;/h3&gt;

&lt;p&gt;Para contextualizar, veja os dois exemplos de utilização de bloco de código. No primeiro exemplo, vamos chamar o método do &lt;strong&gt;&lt;em&gt;animateWithDuration:animations:&lt;/em&gt;&lt;/strong&gt; da classe &lt;strong&gt;&lt;em&gt;UIView&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CGRect novoFrame = CGRectMake(176.0, 258.0, 72.0, 96.0);
[UIView animateWithDuration:2.0
     animations:^ {
          self.view.alpha = 1.0;
          self.view.frame = novoFrame;
          self.view.transform = CGAffineTransformMakeRotation(M_PI);
     }
];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nesse caso, quando a animação for chamada, três transformações serão efetuadas: o &lt;strong&gt;&lt;em&gt;alpha&lt;/em&gt;&lt;/strong&gt;, o &lt;strong&gt;&lt;em&gt;frame&lt;/em&gt;&lt;/strong&gt; e a rotação de 180 graus na &lt;strong&gt;&lt;em&gt;view&lt;/em&gt;&lt;/strong&gt;. Perceba que não há nenhum parâmetro sendo passado para o bloco, e que é possível utilizar variáveis criadas fora do bloco, desde que o escopo permita isso. Além disso, é possível utilizar propriedades da instância da classe onde está o código.&lt;/p&gt;

&lt;p&gt;Já no segundo, vamos chamar o método &lt;strong&gt;&lt;em&gt;enumerateObjectsUsingBlock:&lt;/em&gt;&lt;/strong&gt; da classe &lt;strong&gt;&lt;em&gt;NSArray&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSArray *nomes = 
     [NSArray arrayWithObjects:
            @"Afonso", @"Felipe", 
            @"Hildi", @"Karin", 
            @"Quintana" nil];

[nomes enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) {
     NSLog(@"%@ nome na posição %d", object, index);
}];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Já explico melhor como esse bloco funciona. Por hora, perceba que ele recebe três parâmetros. Olhando a documentação, sabemos que o bloco de código é executado para cada um dos elementos do &lt;strong&gt;&lt;em&gt;NSArray&lt;/em&gt;&lt;/strong&gt;. O primeiro parâmetro, &lt;strong&gt;&lt;em&gt;object&lt;/em&gt;&lt;/strong&gt;, é um dos elementos da coleção. A segunda variável (&lt;strong&gt;&lt;em&gt;index&lt;/em&gt;&lt;/strong&gt;) armazena o índice de &lt;strong&gt;&lt;em&gt;object&lt;/em&gt;&lt;/strong&gt; no &lt;em&gt;array&lt;/em&gt;. E o terceiro parâmetro (um ponteiro para uma variável &lt;em&gt;boolean&lt;/em&gt;) serve para ser utilizado dentro do bloco caso você queira parar a enumeração dos itens.&lt;/p&gt;

&lt;p&gt;Uma vez explicado (bem por alto, reconheço) o modo como utilizar os blocos, vamos mostrar como funciona a sintaxe deles.&lt;/p&gt;

&lt;h3&gt;Sintaxe básica&lt;/h3&gt;

&lt;p&gt;Como explicado anteriormente, um bloco é simplesmente um conjunto de código executável. Neste exemplo mais simples,&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;^ {
     NSDate *data = [NSDate date];
     NSLog(@"A data e a hora agora é %@", data);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;o acento circunflexo inicia o bloco, enquanto as chaves delimitam o corpo do bloco. Nesse caso, temos um bloco se comportando como um método anônimo.&lt;/p&gt;

&lt;p&gt;Mas, sendo anônimo, como utilizar esse bloco? A maneira mais comum é a do primeiro exemplo (animação da &lt;em&gt;view&lt;/em&gt;), em que eu passo o bloco como parâmetro, que, obviamente, é um bloco anônimo. Outra maneira de utilizar o bloco é associá-lo a uma variável e então chamar a variável. Veja como ficaria o código anterior:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;void (^agora)(void) = ^ {
     NSDate *data = [NSDate date];
     NSLog(@"A data e a hora agora é %@", data);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora sim a sintaxe ficou um pouco mais complexa. Veja a imagem abaixo para entender como o bloco deve ser declarado:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2012/1/31/sintaxe-bloco-1.png" /&gt;&lt;/p&gt;

&lt;p&gt;Como você pode perceber, o nome do bloco é sempre declarado entre parêntesis. No nosso exemplo, a variável agora pode ser atribuída a blocos que não tenham retorno (o primeiro &lt;strong&gt;void&lt;/strong&gt;) e que não tenham parâmetro (o segundo &lt;strong&gt;void&lt;/strong&gt;). Para executar o código dentro do bloco, basta chamar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;agora();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Olhando o exemplo da animação da &lt;strong&gt;UIView&lt;/strong&gt;, caso eu quiséssemos passar o bloco agora para o método bastaria fazer:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[UIView animateWithDuration:2.0 animations:agora];
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Parâmetros para o bloco&lt;/h3&gt;

&lt;p&gt;Como toda função que se preze, um bloco pode receber parâmetros. Imagine um bloco que, dado um inteiro, retorna esse número ao quadrado. Declarando um bloco anônimo, temos o seguinte:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;^(int numero) {
     return numero * numero;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;agora, associando a uma variável, temos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int (^quadrado)(int) = ^(int numero) {
     return numero * numero;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;e fazendo a associação anterior:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2012/1/31/sintaxe-bloco-2.png" /&gt;&lt;/p&gt;

&lt;p&gt;Para utilizar a variável, nada mais simples:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int q = quadrado(8); //q tem valor 64
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nesse caso, só há um parâmetro inteiro. Para outros parâmetros, basta separar os tipos deles por vírgula. Um bloco de método que multiplica duas variáveis ficaria assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int (^multiplicar)(int, int) = ^(int a, int b) {
    return a * b;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E, obviamente, a variável pode ser chamada da seguinte forma:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int x = multiplicar(2,3); //x tem valor 6
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Enfim, espero que essa breve (nem tão breve assim) introdução sobre blocos tenha ajudado. Para um maior aprofundamento, vale a pena dar uma lida na &lt;a href="http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html"&gt;documentação da Apple&lt;/a&gt; sobre o assunto. Qualquer dúvida, manda aí nos comentários.&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/12/30/utilizando-imagens-redimensionaveis-no-ios"&gt; Utilizando imagens redimensionáveis no iOS &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/11/18/como-integrar-seu-aplicativo-com-o-twitter-no-ios-5"&gt; Como integrar seu aplicativo com o Twitter no iOS 5 &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/9/26/configurando-o-nszombieenabled-no-xcode-4"&gt; Configurando o NSZombieEnabled no Xcode 4 &lt;/a&gt;&lt;/li&gt;

    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/hMke3jdBQvU" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/2/2/blocos-de-codigo-em-objective-c</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Quintana</name>
    </author>
    <id>tag:www.mobits.com.br,2012-01-27:787</id>
    <published>2012-01-27T21:00:00Z</published>
    <updated>2012-01-27T21:05:02Z</updated>
    <category term="Blog" />
    <category term="desenvolvimento" />
    <category term="iphone sdk" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/Qv08Sgrz6TA/customizando-sua-uitabbar-no-ios-5" rel="alternate" type="text/html" />
    <title>Customizando sua UITabBar no iOS 5</title>
<summary type="html">&lt;p&gt;O iOS 5 oferece novas APIs que permitem que elementos antes padronizados do iOS agora possam ser modificados de acordo com seu &lt;em&gt;layout&lt;/em&gt;. &lt;/p&gt;</summary><content type="html">
            &lt;p&gt;O iOS 5 oferece novas APIs que permitem que elementos antes padronizados do iOS agora possam ser modificados de acordo com seu &lt;em&gt;layout&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Uma dessas APIs permite que você altere o fundo da &lt;i&gt;UITabBar&lt;/i&gt; da seguinte forma:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;UIImage *tabBackground = [[UIImage imageNamed:@"tab_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UITabBar appearance] setBackgroundImage:tabBackground];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você tentar executar esse código no iOS 4 ou inferior receberá o erro &lt;em&gt;unrecognized selector sent to class&lt;/em&gt; ao tentar chamar o &lt;em&gt;[UITabBar appearance]&lt;/em&gt;, isso ocorre porque esse método de classe está disponível apenas no iOS 5.&lt;/p&gt;

&lt;p&gt;Outra coisa que pode ser alterada é a imagem sobre o item selecionado, feita da seguinte forma: &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"tab_select_indicator"]];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Utilizando a API &lt;em&gt;appearance&lt;/em&gt; é possível fazer interfaces bem mais customizadas, como essa tabBar:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2012/1/27/tabbar.png" /&gt;&lt;/p&gt;

&lt;p&gt;Em breve daremos mais dicas de &lt;em&gt;layout&lt;/em&gt;.&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/12/30/utilizando-imagens-redimensionaveis-no-ios"&gt; Utilizando imagens redimensionáveis no iOS &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/12/1/dicas-de-layout-para-aplicativos-android"&gt; Dicas de layout para aplicativos Android &lt;/a&gt;&lt;/li&gt;


    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/Qv08Sgrz6TA" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/1/27/customizando-sua-uitabbar-no-ios-5</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Hildi</name>
    </author>
    <id>tag:www.mobits.com.br,2012-01-27:785</id>
    <published>2012-01-27T17:59:00Z</published>
    <updated>2012-01-27T17:59:19Z</updated>
    <category term="Blog" />
    <category term="android" />
    <category term="desenvolvimento" />
    <category term="sdk" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/CJQpIOtY6os/como-enviar-arquivos-via-http-no-android" rel="alternate" type="text/html" />
    <title>Como enviar arquivos via HTTP no Android</title>
<summary type="html">&lt;p&gt;Quem algum dia precisou fazer envio de arquivos mais elaborado via &lt;em&gt;http&lt;/em&gt; no Android, já deve ter percebido que não existe um &lt;em&gt;&lt;a href="http://developer.android.com/reference/org/apache/http/HttpEntity.html"&gt;HttpEntity&lt;/a&gt;&lt;/em&gt; especial para isso. Foi ao passar por este problema que precisei buscar alternativas e é este o tema deste post. &lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Quem algum dia precisou fazer envio de arquivos mais elaborado via &lt;em&gt;http&lt;/em&gt; no Android, já deve ter percebido que não existe um &lt;em&gt;&lt;a href="http://developer.android.com/reference/org/apache/http/HttpEntity.html"&gt;HttpEntity&lt;/a&gt;&lt;/em&gt; especial para isso. Foi ao passar por este problema que precisei buscar alternativas e é este o tema deste post. &lt;/p&gt;
&lt;p&gt;O problema era fazer envio de arquivo como &lt;a href="http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html"&gt;&lt;em&gt;multipart/form-data-encoded&lt;/em&gt;&lt;/a&gt; e o Android não traz essa funcionalidade nativamente. Para fazer esse tipo de envio, descobri o MultipartEntity, que faz parte do &lt;em&gt;&lt;a href="http://hc.apache.org/httpcomponents-client-ga/index.html"&gt;HttpClient&lt;/a&gt;&lt;/em&gt; da &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Antes de utilizá-lo, lembre-se de incluir os &lt;em&gt;jars&lt;/em&gt; do &lt;em&gt;&lt;a href="http://hc.apache.org/httpcomponents-client-ga/index.html"&gt;HttpClient&lt;/a&gt;&lt;/em&gt; no seu projeto. Veja como o &lt;em&gt;&lt;a href="http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html"&gt;MultipartEntity&lt;/a&gt;&lt;/em&gt; funciona no exemplo abaixo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, boundary, Charset.defaultCharset());    
 byte[] data = //seu arquivo em array de bytes
 ByteArrayBody b = new ByteArrayBody(data, "image/png", "nome_arquivo.png");
 entity.addPart("file", b);
 in.close();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Neste exemplo, vale lembrar que é preciso passar o &lt;em&gt;boundary&lt;/em&gt; e seu arquivo em formato de &lt;em&gt;array&lt;/em&gt; de &lt;em&gt;bytes&lt;/em&gt;. Você pode passar seu arquivo de outras maneiras, além do &lt;em&gt;ByteArrayBody&lt;/em&gt;, existem outros tipos como: &lt;em&gt;AbstractContentBody&lt;/em&gt;, &lt;em&gt;FileBody&lt;/em&gt;, &lt;em&gt;InputStreamBody&lt;/em&gt; e &lt;em&gt;StringBody&lt;/em&gt;. Veja a documentação &lt;a href="http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/content/package-summary.html"&gt;aqui&lt;/a&gt; para saber mais detalhes.&lt;/p&gt;

&lt;p&gt;Espero que a dica também seja útil a vocês!&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/12/1/dicas-de-layout-para-aplicativos-android"&gt; Dicas de layout para aplicativos Android &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/10/21/android-ice-cream-sandwich-novidades-para-desenvolvedores"&gt;Android Ice Cream Sandwich: novidades para desenvolvedores &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/5/20/personalizando-fontes-no-android"&gt;Personalizando fontes no Android&lt;/a&gt;&lt;/li&gt;

    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/CJQpIOtY6os" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/1/27/como-enviar-arquivos-via-http-no-android</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Hildi</name>
    </author>
    <id>tag:www.mobits.com.br,2012-01-24:768</id>
    <published>2012-01-24T18:15:00Z</published>
    <updated>2012-01-24T18:16:02Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="aplicativos para celular" />
    <category term="blackberry" />
    <category term="iphone" />
    <category term="zurbb" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/1wnMFwOBgsw/zurbb-descubra-o-que-esta-acontecendo-em-sua-cidade" rel="alternate" type="text/html" />
    <title>Zurbb: descubra o que está acontecendo em sua cidade!</title>
<summary type="html">&lt;p&gt;A Mobits acaba de desenvolver as versões para iPhone/iPod Touch e Blackberry do &lt;a href="http://www.zurbb.com/"&gt;Zurbb&lt;/a&gt; - serviço que mostra o que está acontecendo na cidade, através de colaborações (zurbbs) feitas pelos próprios usuários e promoções feitas pelos estabelecimentos (lugares) catalogados. Veja como ele funciona para evitar furadas e a aproveitar o que há de melhor ocorrendo na cidade!&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;A Mobits acaba de desenvolver as versões para iPhone/iPod Touch e Blackberry do &lt;a href="http://www.zurbb.com/"&gt;Zurbb&lt;/a&gt; - serviço que mostra o que está acontecendo na cidade, através de colaborações (zurbbs) feitas pelos próprios usuários e promoções feitas pelos estabelecimentos (lugares) catalogados. Veja como ele funciona para evitar furadas e a aproveitar o que há de melhor ocorrendo na cidade!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2012/1/23/zurbb_iphone.png" /&gt;&lt;/p&gt;

&lt;p&gt;No aplicativo, é possível ter uma visão geral do que está acontecendo na cidade, através da listagem dos útlimos zurbbs, promos e lugares recentemente mencionados. Os zurbbs, promos e lugares podem ser vistos de acordo com sua categoria (para comer, bares, noite e carnaval) e localização (próximos a mim ou próximo a um endereço) ou de acordo com o radar do usuário ou um determinado lugar. O radar é um conjunto de lugares de interesse do usuário.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2012/1/23/zurbb_bby.png" /&gt;&lt;/p&gt;

&lt;p&gt;Os zurbbs e promos podem ser respondidos ou ganhar um &lt;em&gt;Up&lt;/em&gt;. Responder um zurbb ou promo é o mesmo que fazer um comentário a respeito dele. E fazer um &lt;em&gt;Up&lt;/em&gt; significa aumentar a importância daquele zurbb ou promo, fazendo com que ele pule para o topo da lista. As promos podem ser obtidas a qualquer momento e seus cupons ficam disponíveis no perfil do usuário.&lt;/p&gt;

&lt;p&gt;No perfil, o usuário tem rápido acesso ao seu radar, seus pontos, promos e avisos gerais do Zurbb.&lt;/p&gt;

&lt;p&gt;Para fazer parte do &lt;a href="http://www.zurbb.com/"&gt;Zurbb&lt;/a&gt; é fácil, basta se cadastrar pelo aplicativo ou pelo site. &lt;/p&gt;

&lt;p&gt;Os aplicativos já estão disponíveis gratuitamente em suas respectivas lojas. Seguem os links abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://appworld.blackberry.com/webstore/content/65865?lang=pt_br"&gt;Download Zurbb Blackberry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://itunes.apple.com/br/app/zurbb/id472076028?mt=8"&gt;Download Zurbb iPhone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/1wnMFwOBgsw" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2012/1/24/zurbb-descubra-o-que-esta-acontecendo-em-sua-cidade</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Felipe Barreto</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-30:780</id>
    <published>2011-12-30T17:46:00Z</published>
    <updated>2011-12-30T20:18:27Z</updated>
    <category term="Blog" />
    <category term="desenvolvimento" />
    <category term="iphone sdk" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/M-8CBwhaFMY/utilizando-imagens-redimensionaveis-no-ios" rel="alternate" type="text/html" />
    <title>Utilizando imagens redimensionáveis no iOS</title>
<summary type="html">&lt;h3&gt;O Problema&lt;/h3&gt;

&lt;p&gt;É comum desenvolvermos telas que utilizam imagens com cantos arredondados e gradientes de modo a enriquecer a aparência do produto final. Em geral, pedimos para o designer cortar essas imagens no tamanho exato para o qual ela foi planejada. Contudo, existem diversos casos onde queremos redimensioná-las ou apresentá-las em diversos formatos diferentes.&lt;/p&gt;</summary><content type="html">
            &lt;h3&gt;O Problema&lt;/h3&gt;

&lt;p&gt;É comum desenvolvermos telas que utilizam imagens com cantos arredondados e gradientes de modo a enriquecer a aparência do produto final. Em geral, pedimos para o designer cortar essas imagens no tamanho exato para o qual ela foi planejada. Contudo, existem diversos casos onde queremos redimensioná-las ou apresentá-las em diversos formatos diferentes.&lt;/p&gt;
&lt;h3&gt;Solução trivial&lt;/h3&gt;

&lt;p&gt;Se, inocentemente, você simplesmente redimensionar a &lt;em&gt;UIImageView&lt;/em&gt; para o formato desejado, a imagem ficará distorcida como nos exemplos abaixo.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/uiimage_resize_errado.png" alt="UIImage redimensionada de modo errado" /&gt;&lt;/p&gt;

&lt;p&gt;A segunda opção, e provavelmente a escolhida pela maioria, é criar uma imagem para cada cenário onde será utilizada, chegando aos resultados abaixo. &lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/uiimage_3_arquivos.png" alt="Uma UIImage para cada cenário" /&gt;&lt;/p&gt;

&lt;p&gt;Essa solução atinge o objetivo visual esperado, mas dificulta a gerência de diversos arquivos muito semelhantes e ainda aumenta o tamanho do aplicativo final.&lt;/p&gt;

&lt;h3&gt;Soluções com apenas uma imagem&lt;/h3&gt;

&lt;p&gt;Como vimos anteriormente, o &lt;a href="http://mobits.com.br/2011/12/1/dicas-de-layout-para-aplicativos-android"&gt;Android SDK possui suporte nativo ao conceito de 9-patch&lt;/a&gt; o que resolve facilmente o problema acima a partir de um único arquivo .9.png. No iOS não existe suporte nativo ao formato, mas existem soluções menos flexíveis que podem ser empregadas para atingir o mesmo objetivo.&lt;/p&gt;

&lt;h4&gt;UIImage strechable/resizable&lt;/h4&gt;

&lt;p&gt;Se seu aplicativo precisa funcionar em &lt;strong&gt;iOS 4.x&lt;/strong&gt; ou inferior:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O método acima cria uma imagem a partir da original informando a porção desta (em pixels) que deve permanecer inalterada quando houver redimensionamento. Conceitualmente, o resultado fica assim:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/uiimage_stretchable.png" alt="Conceito do UIImage stretchableImageWithLeftCapWidth:topCapHeight:" /&gt;&lt;/p&gt;

&lt;p&gt;O retângulo vermelho será preenchido pelo pixel na posição (leftCapWidth + 1, topCapHeight + 1), enquanto as regiões amarelas serão preenchidas pelo segmento lateral de 1px no sentido indicado pelas setas.  &lt;/p&gt;

&lt;p&gt;Ex:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;UIImage *image = [[UIImage imageNamed:@"stretch.png"] 
                  stretchableImageWithLeftCapWidth:13 topCapHeight:15];

self.imageView.image = image;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O método acima está obsoleto no &lt;strong&gt;iOS 5&lt;/strong&gt;. Neste caso, você poderá usar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Assim, como o método antigo, este cria uma imagem a partir da original com definições de como esta deve ser redimensionada. A diferença é que utilizamos um &lt;em&gt;UIEdgeInsets&lt;/em&gt; para definir um retângulo que servirá de referência para o processo de redimensionamento. Eis o conceito:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/uiimage_resizable.png" alt="Conceito do UIImage resizableImageWithCapInsets:" /&gt;&lt;/p&gt;

&lt;p&gt;Agora, ao invés de expandir um único pixel, será definida uma área (em vermelho) que deverá ser &lt;strong&gt;replicada&lt;/strong&gt; para preencher o espaço necessário. As áreas amarelas também serão replicadas nos sentidos indicados. Para realizar um comportamento semelhante ao método anterior, basta definir os &lt;em&gt;insets&lt;/em&gt; com tamanho zero (ou "negativo"). Ex.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// defino os insets com o right e o bottom exagerados, para que apenas 1px seja replicado
UIImage *image = [[UIImage imageNamed:@"stretch_tile.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(48, 38, 1000, 1000)]; 
self.imageView.image = image;
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;UIView contentStretch&lt;/h4&gt;

&lt;p&gt;As soluções anteriores agem diretamente sobre a &lt;em&gt;UIImage&lt;/em&gt;. Existe um outro caminho que age sobre o &lt;em&gt;container&lt;/em&gt; (&lt;em&gt;UIView&lt;/em&gt;):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@property(nonatomic) CGRect contentStretch; //Em UIView.h
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Este método causa um comportamento ligeiramente semelhante aos anteriores, mas é utilizado na &lt;em&gt;UIImageView&lt;/em&gt; e não na &lt;em&gt;UIImage&lt;/em&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;self.imageView2.contentStretch = CGRectMake(0.1, 0.05, 0.7, 0.8);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Repare que neste caso, o retângulo de referência não é mais definido em pixels, mas em proporções (de 0.0 a 1.0). No exemplo acima, o retângulo terá a origem em (10%, 5%) do tamanho da &lt;em&gt;UIImageView&lt;/em&gt; e seu tamanho será de (70%, 80%) da mesma.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/contentStretch.png" alt="Conceito do UIView contentStretch" /&gt;&lt;/p&gt;

&lt;h3&gt;Limitações&lt;/h3&gt;

&lt;h4&gt;Gradientes&lt;/h4&gt;

&lt;p&gt;Os métodos que atuam sobre a &lt;em&gt;UIImage&lt;/em&gt; e o &lt;em&gt;contentStretch&lt;/em&gt; manipulam a imagem de maneiras diferentes. Essa diferença é perceptível em alguns casos como no redimensionamento de uma imagem com gradiente. Veja os exemplos:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/diferencas_gradiente_uiimage_e_contentstretch.png" alt="Diferenças entre a UIImage com stretch/resize e o uso do contentStretch" /&gt; &lt;/p&gt;

&lt;p&gt;Somente o &lt;em&gt;contentStretch&lt;/em&gt; de fato estica a área central, permitindo que o gradiente se distribua mais uniformemente. Se for necessário que uma imagem se expanda no mesmo sentido que o gradiente, então essa técnica é a mais indicada. Se a expansão for majoritariamente no eixo perpendicular ao gradiente, então todas terão o efeito semelhante: &lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/semelhancas_gradiente_uiimage_e_contentstretch.png" alt="Semelhanças entre a UIImage com stretch/resize e o uso do contentStretch" /&gt; &lt;/p&gt;

&lt;h4&gt;UIButtons&lt;/h4&gt;

&lt;p&gt;O caso mais comum de uso de imagens como as anteriores é como fundo dos &lt;em&gt;UIButton&lt;/em&gt;. Infelizmente, o comportamento do &lt;em&gt;contentStretch&lt;/em&gt; nos &lt;em&gt;UIButton&lt;/em&gt; não é o esperado e não influencia a maneira como a imagem de fundo é exibida. Neste caso, precisamos usar os métodos de &lt;em&gt;UIImage&lt;/em&gt; para resolver nosso problema:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[self.button setBackgroundImage:image forState:UIControlStateNormal];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Contudo, quando queremos que o botão realce ou esmaeça a imagem se selecionado ou desabilitado, preenchemos as propriedades &lt;em&gt;adjustsImageWhenHighlighted&lt;/em&gt; e &lt;em&gt;adjustsImageWhenDisabled&lt;/em&gt;. Infelizmente, ao usarmos a técnica acima, os efeitos de &lt;em&gt;highlight&lt;/em&gt; e de desabilitado são aplicados de maneira errada.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mobits.com.br/assets/2011/12/30/erros_no_uibutton.png" alt="UIButton com o highlight e disable errados" /&gt;&lt;/p&gt;

&lt;p&gt;Para contornar esse problema, precisamos criar outras duas imagens, uma para cada estado e associá-las ao &lt;em&gt;UIButton&lt;/em&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[self.button setBackgroundImage:imageDisable forState:UIControlStateDisabled];
[self.button setBackgroundImage:imageHighligh forState:UIControlStateHighlighted];
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Outras técnicas&lt;/h3&gt;

&lt;p&gt;Todas as soluções acima são nativas do iOS. Existem soluções de terceiros, que ainda não testamos, que permitem, p. ex. &lt;a href="http://blog.tortuga22.com/2010/05/31/announcing-tortuga-22-ninepatch/"&gt;utilizar o 9-patch&lt;/a&gt; de maneira semelhante ao Android. Se alguém tiver a oportunidade de usar essa ou outra solução e quiser comentar aqui, não se acanhe.&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/12/1/dicas-de-layout-para-aplicativos-android"&gt; Dicas de layout para aplicativos Android &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/11/23/atalhos-de-teclado-para-o-xcode-4"&gt; Atalhos de teclado para o Xcode 4 &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/9/9/2-dicas-simples-para-trabalhar-com-nsnull"&gt; 2 dicas simples para trabalhar com NSNull &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/8/13/5-referencias-uteis-para-desenvolvedores-ios"&gt; 5 referências úteis para desenvolvedores iOS &lt;/a&gt;&lt;/li&gt;

    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/M-8CBwhaFMY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/30/utilizando-imagens-redimensionaveis-no-ios</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Karin</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-27:777</id>
    <published>2011-12-27T16:54:00Z</published>
    <updated>2011-12-27T16:54:40Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="android" />
    <category term="aplicativos para celular" />
    <category term="iphone" />
    <category term="peixe urbano" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/73TEVe-oT7U/peixe-urbano-e-mobits-desenvolvem-aplicativos-para-iphone-e-android" rel="alternate" type="text/html" />
    <title>Peixe Urbano e Mobits desenvolvem os aplicativos para iPhone e Android</title>
<summary type="html">&lt;p&gt;O &lt;a href="http://www.peixeurbano.com.br"&gt;Peixe Urbano&lt;/a&gt; lançou na última quarta-feira, dia 21/12, os seus aplicativos para iPhone/iPod Touch e &lt;em&gt;smartphones&lt;/em&gt; com Android. Agora ficou mais fácil comprar uma oferta e acessar seus cupons de qualquer lugar!&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;O &lt;a href="http://www.peixeurbano.com.br"&gt;Peixe Urbano&lt;/a&gt; lançou na última quarta-feira, dia 21/12, os seus aplicativos para iPhone/iPod Touch e &lt;em&gt;smartphones&lt;/em&gt; com Android. Agora ficou mais fácil comprar uma oferta e acessar seus cupons de qualquer lugar!&lt;/p&gt;
&lt;p&gt;Tanto no aplicativo para iOS quanto para Android, o usuário pode ver na palma da mão as ofertas do dia, comprar e conferir seus cupons. Acessar seu saldo e cadastrar uma cidade para receber as ofertas do dia por e-mail também ficou bem simples.&lt;/p&gt;

&lt;p&gt;&lt;img title="Lista de ofertas" src="http://www.mobits.com.br/assets/2011/12/26/postPeixe4.jpg" alt="Lista de ofertas" /&gt;&lt;img title="Meus cupons" src="http://www.mobits.com.br/assets/2011/12/26/postPeixe1.jpg" alt="Meus cupons" /&gt;&lt;/p&gt;

&lt;p&gt;Além dessas funcionalidades, é possível compartilhar uma oferta e sua compra via Facebook, Twitter, e-mail e sms com os amigos.&lt;/p&gt;

&lt;p&gt;&lt;img title="Compartilhar oferta" src="http://www.mobits.com.br/assets/2011/12/26/postPeixe2.jpg" alt="Compartilhar oferta" /&gt;&lt;img title="Compartilhar oferta" src="http://www.mobits.com.br/assets/2011/12/26/postPeixe3.jpg" alt="Compartilhar oferta" /&gt;&lt;/p&gt;

&lt;p&gt;Requisito mínimo para iPhone é o iOS4 e para &lt;em&gt;smartphones&lt;/em&gt; Android é o 1.6. Os aplicativos Peixe Urbano já estão disponíveis na &lt;a href="http://itunes.apple.com/br/app/peixe-urbano-iphone/id423021834"&gt;App Store&lt;/a&gt; e no &lt;a href="https://market.android.com/details?id=br.com.mobits.peixeurbano"&gt;Android Market&lt;/a&gt;. Confira!&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/12/19/mobits-desenvolve-aplicativo-do-ego-para-a-globo-com"&gt;Mobits desenvolve aplicativo do Ego para a Globo.com&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/73TEVe-oT7U" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/27/peixe-urbano-e-mobits-desenvolvem-aplicativos-para-iphone-e-android</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Quintana</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-21:775</id>
    <published>2011-12-21T18:56:00Z</published>
    <updated>2011-12-21T21:36:32Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="promoção" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/dFwSx_Vj_Z0/promocao-de-natal-mobits-aplicativos-a-0-99" rel="alternate" type="text/html" />
    <title>Promoção de Natal Mobits - aplicativos a $0,99</title>
<summary type="html">&lt;p&gt;A Mobits está presenteando seus usuários neste Natal! Baixamos o preço dos nossos principais jogos para $0.99, não perca!&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;A Mobits está presenteando seus usuários neste Natal! Baixamos o preço dos nossos principais jogos para $0.99, não perca!&lt;/p&gt;
&lt;p&gt;
    &lt;img src="http://mobits.com.br/assets/2011/12/21/promocaoAppStoreMobits.jpg" /&gt;
&lt;/p&gt;  

&lt;h3&gt;Jogos em promoção&lt;/h3&gt;

&lt;p&gt;Os jogos abaixo estão em promoção até o dia 31/12 e disponíveis tanto na App Store Brasileira quanto na internacional.&lt;/p&gt;

&lt;h4&gt;The Hungry Pets - &lt;del&gt;$1,99&lt;/del&gt; $0,99&lt;/h4&gt;

&lt;table&gt;
  &lt;tr&gt;
            &lt;td height="92" width="112"&gt;
                &lt;img src="http://mobits.com.br/assets/2011/12/21/icoHungry.png" /&gt;
            &lt;/td&gt;
            &lt;td&gt;
                Ideal para jogar com seus filhos e amigos, o &lt;a href="http://thehungrypets.com/pt"&gt;The Hungry Pets&lt;/a&gt; é um jogo de tabuleiro que exige inteligência e estratégia. Neste jogo, cada jogador deve achar o caminho para sua comida antes dos demais. Itens especiais podem ajudá-lo a chegar mais rápido ou atrapalhar seus adversários :P. 
            &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;&lt;a href="http://itunes.apple.com/br/app/the-hungry-pets-brasil/id452288781?mt=8"&gt;Download na App Store Nacional&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://itunes.apple.com/us/app/the-hungry-pets/id407074062?mt=8"&gt;Download na App Store Americana&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Mobits Button Soccer - &lt;del&gt;$1,99&lt;/del&gt; $0,99&lt;/h4&gt;

&lt;table&gt;
  &lt;tr&gt;
            &lt;td height="92" width="112"&gt;
                &lt;img src="http://www.mobits.com.br/assets/2011/8/11/icoMbs98.png" /&gt;
            &lt;/td&gt;
            &lt;td&gt;
                Nosso famoso futebol de botão em versão de bolso, &lt;a href="http://www.mobitsbuttonsoccer.com/pt"&gt;Mobits Button Soccer&lt;/a&gt;, permite jogos com dois jogadores no mesmo dispositivo, dois dispositivos conectados por bluetooth ou online, além de jogos contra a máquina em amistosos e campeonatos.
            &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;&lt;a href="http://itunes.apple.com/us/app/mobits-button-soccer-brasil/id325537064?ls=1&amp;amp;amp;mt=8"&gt;Download na App Store Nacional&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://itunes.apple.com/us/app/mobits-button-soccer/id325505542?ls=1&amp;amp;amp;mt=8"&gt;Download na App Store Americana&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Mobits Button Soccer HD - &lt;del&gt;$2,99&lt;/del&gt; $0,99&lt;/h4&gt;

&lt;table&gt;
  &lt;tr&gt;
            &lt;td height="92" width="112"&gt;
                &lt;img src="http://mobits.com.br/assets/2011/12/21/icoMBSHD98.png" /&gt;
            &lt;/td&gt;
            &lt;td&gt;
                A versão HD do &lt;a href="http://www.mobitsbuttonsoccer.com/pt"&gt;Mobits Button Soccer&lt;/a&gt; foi totalmente adaptada para o iPad, ideal para fazer do seu iPad um mini tabuleiro de futebol de botão.
            &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;&lt;a href="http://itunes.apple.com/us/app/mobits-button-soccer-brasil/id451751048?ls=1&amp;amp;amp;mt=8"&gt;Download na App Store Nacional&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://itunes.apple.com/us/app/mobits-button-soccer-hd/id450495255?ls=1&amp;amp;amp;mt=8"&gt;Download na App Store Americana&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Promoção Cine Mobits&lt;/h3&gt;

&lt;p&gt;Também estamos realizando uma promoção no &lt;a href="http://cine.mobits.com.br/"&gt;Cine Mobits&lt;/a&gt;, nosso aplicativo de consulta de programação de cinemas no celular: todos os usuários que curtirem &lt;a href="http://pt-br.facebook.com/pages/Cine-Mobits/356704457220"&gt;a página do Cine Mobits no Facebook&lt;/a&gt; irão concorrer a 3 vale-ingressos da &lt;a href="http://www.ingresso.com"&gt;ingresso.com&lt;/a&gt; no valor de 50 reais cada.&lt;/p&gt;

&lt;p&gt;&lt;img title="Promoção Cine Mobits" src="http://mobits.com.br/assets/2011/12/21/383995_10150442012672221_356704457220_8151324_910678220_n.jpg" alt="Promoção Cine Mobits" /&gt;&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/dFwSx_Vj_Z0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/21/promocao-de-natal-mobits-aplicativos-a-0-99</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Afonso Junior</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-19:773</id>
    <published>2011-12-19T18:06:00Z</published>
    <updated>2011-12-20T16:47:00Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="ego" />
    <category term="globo.com" />
    <category term="ipad" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/iKkEggLQoBE/mobits-desenvolve-aplicativo-do-ego-para-a-globo-com" rel="alternate" type="text/html" />
    <title>Mobits desenvolve aplicativo do Ego para a Globo.com</title>
<summary type="html">&lt;p&gt;Desenvolvido pela Globo.com e pela Mobits, o aplicativo para iPad com conteúdo exclusivo do portal Ego chega à App Store.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Desenvolvido pela Globo.com e pela Mobits, o aplicativo para iPad com conteúdo exclusivo do portal Ego chega à App Store.&lt;/p&gt;
&lt;p&gt;&lt;img title="Capa do Ego" src="http://www.mobits.com.br/assets/2011/12/16/ego-capa.png" alt="Capa do Ego" /&gt;&lt;/p&gt;

&lt;p&gt;O aplicativo traz o conteúdo do portal &lt;a href="http://ego.globo.com"&gt;Ego&lt;/a&gt; com uma experiência diferente - visualização das matérias no formato de uma revista - e permite ao leitor ver os detalhes das notícias, as fotos, além de compartilhar nas principais redes sociais.&lt;/p&gt;

&lt;p&gt;&lt;img title="Página do Ego" src="http://www.mobits.com.br/assets/2011/12/16/ego-pagina.png" alt="Página do Ego" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img title="Matéria do Ego" src="http://www.mobits.com.br/assets/2011/12/16/ego-materia.png" alt="Matéria do Ego" /&gt;&lt;/p&gt;

&lt;p&gt;O aplicativo está disponível para download na &lt;a href="http://itunes.apple.com/br/app/ego/id488836833?mt=8"&gt;App Store&lt;/a&gt;. &lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/2/1/aplicativo-do-g1-para-ipad-lancado"&gt;Aplicativo do G1 para iPad é lançado!&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/1/12/mobits-participa-do-bbb-11"&gt;Mobits participa do BBB 11&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2010/3/16/globoesporte-com-e-mobits-lancam-app-sobre-futebol"&gt;Globoesporte.com e Mobits lançam app sobre futebol&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/iKkEggLQoBE" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/19/mobits-desenvolve-aplicativo-do-ego-para-a-globo-com</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Hildi</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-01:761</id>
    <published>2011-12-01T22:01:00Z</published>
    <updated>2011-12-01T22:03:03Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="androidconf" />
    <category term="evento" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/MF3occBeA1w/mobits-na-androidconf-brasil-2011" rel="alternate" type="text/html" />
    <title>Mobits na AndroidConf Brasil 2011</title>
<summary type="html">&lt;p&gt;Como já havíamos comentado por &lt;a href="http://www.mobits.com.br/2011/11/8/vem-ai-a-androidconf-2011"&gt;aqui&lt;/a&gt;, no último sábado rolou a primeira edição do &lt;a href="http://androidconf.com.br/"&gt;AndroidConf Brasil&lt;/a&gt;. E tenho que dizer que o evento foi um sucesso! Com todas as 250 vagas preenchidas, a conferência foi marcada por palestras muito interessantes. Veja o que rolou por lá!&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Como já havíamos comentado por &lt;a href="http://www.mobits.com.br/2011/11/8/vem-ai-a-androidconf-2011"&gt;aqui&lt;/a&gt;, no último sábado rolou a primeira edição do &lt;a href="http://androidconf.com.br/"&gt;AndroidConf Brasil&lt;/a&gt;. E tenho que dizer que o evento foi um sucesso! Com todas as 250 vagas preenchidas, a conferência foi marcada por palestras muito interessantes. Veja o que rolou por lá!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2011/11/30/android_conf_foto.png" /&gt;&lt;/p&gt;

&lt;p&gt;O AndroidConf contou com quatro &lt;em&gt;keynotes&lt;/em&gt; principais, dois nacionais e dois internacionais. São eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bruno de Oliveira (&lt;a href="http://www.google.com.br/intl/pt-BR/about/corporate/company/"&gt;Google Brasil&lt;/a&gt;) - em sua palestra de abertura, ele contou sobre as novidades do &lt;a href="http://developer.android.com/sdk/android-4.0-highlights.html"&gt;Ice Cream Sandwich&lt;/a&gt;, versão recém-lançada do sistema operacional Android;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mark Allison (&lt;a href="http://blog.stylingandroid.com/"&gt;StylingAndroid.com&lt;/a&gt;) - blogueiro do site &lt;a href="http://blog.stylingandroid.com/"&gt;StylingAndroid.com&lt;/a&gt; e deu diversas dicas de como fazer diagramações no Android;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ricardo Lecheta (&lt;a href="http://www.livetouch.com.br/"&gt;Livetouch&lt;/a&gt;) - autor do primeiro livro em português sobre o assunto (&lt;a href="http://www.livroandroid.com.br/"&gt;Google Android - aprenda a criar aplicações para dispositivos móveis com o Android SDK&lt;/a&gt;) falou sobre como o uso de &lt;em&gt;Fragments&lt;/em&gt; pode facilitar a vida quando se tem muitas informações em telas de &lt;em&gt;tablet&lt;/em&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Michael Burton (&lt;a href="http://www.groupon.com.br/"&gt;Groupon&lt;/a&gt;) - fechou o evento, apresentando o &lt;a href="http://code.google.com/p/roboguice/"&gt;RoboGuice: Dependency Injection for Android&lt;/a&gt;. O RoboGuice visa facilitar o desenvolvimento de aplicações Android.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Além dos &lt;em&gt;keynotes&lt;/em&gt;, também teve palestras abordando os mais diversos assuntos como: a criação de jogos, uso de OpenGL,  o gerenciamento de memória, persistência de dados e automação residencial. Houve também um Coding Dojo e um Lightning Talks dos participantes. No Lightning Talks, os participantes tiveram a oportunidade de realizar uma mini-palestra de 5 minutos cada.&lt;/p&gt;

&lt;p&gt;Nós, da Mobits, ficamos muito felizes e satisfeitos com a organização e o resultado do evento. Acreditamos que é importante apoiar e incentivar iniciativas como esta, que visam o crescimento da comunidade de desenvolvedores &lt;em&gt;mobile&lt;/em&gt; no Brasil.&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2010/9/28/mobits-no-i-prmio-mobilefest-de-aplicativos-para-celular"&gt;Mobits no I Prêmio Mobilefest de Aplicativos para Celular&lt;/a&gt;&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2010/3/30/mobits-no-movilforum-latinoamerica-2010"&gt;Mobits no Movilforum Latinoamerica 2010&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/MF3occBeA1w" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/1/mobits-na-androidconf-brasil-2011</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Karin</name>
    </author>
    <id>tag:www.mobits.com.br,2011-12-01:763</id>
    <published>2011-12-01T18:01:00Z</published>
    <updated>2011-12-01T18:18:09Z</updated>
    <category term="Blog" />
    <category term="android" />
    <category term="layout" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/_BE6ga2bdl0/dicas-de-layout-para-aplicativos-android" rel="alternate" type="text/html" />
    <title>Dicas de layout para aplicativos Android</title>
<summary type="html">&lt;p&gt;O &lt;a href="http://developer.android.com"&gt;Android SDK&lt;/a&gt; provê diversos recursos interessantes para a criação de layouts que se adaptam às diversas telas e resoluções dos aparelhos. Seguem algumas dicas que costumamos utilizar em nossos projetos.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;O &lt;a href="http://developer.android.com"&gt;Android SDK&lt;/a&gt; provê diversos recursos interessantes para a criação de layouts que se adaptam às diversas telas e resoluções dos aparelhos. Seguem algumas dicas que costumamos utilizar em nossos projetos.&lt;/p&gt;
&lt;h3&gt;Imagens .9.png&lt;/h3&gt;

&lt;p&gt;Como aplicativos Android podem ser instalados em vários &lt;em&gt;smartphones&lt;/em&gt; que possuem &lt;a href="http://developer.android.com/guide/practices/screens_support.html"&gt;telas diferentes&lt;/a&gt;, a gente acaba tendo que fazer várias imagens de tamanhos diferentes. Mas em alguns casos, nós podemos utilizar as imagens .9.png. &lt;/p&gt;

&lt;p&gt;Mas o que é esse formato? Simples, ele permite que as imagens sejam esticadas, sem perder qualidade, vertical e horizontalmente (conforme determinado por você), dependendo da tela do aparelho. E como fazer? Basta utilizar um programinha disponibilizado pela Google quando você baixa o Android SDK chamado &lt;strong&gt;draw9patch&lt;/strong&gt;. Para saber mais, &lt;a href="http://developer.android.com/guide/developing/tools/draw9patch.html"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Abaixo, um exemplo de imagem .9.png:&lt;/p&gt;

&lt;p&gt;&lt;img title="Imagem .9.png" src="http://www.mobits.com.br/assets/2011/11/28/button.9.png" alt="Imagem .9.png" /&gt;&lt;/p&gt;

&lt;p&gt;O exemplo acima poderia gerar os seguintes resultados sem nenhum esforço:&lt;/p&gt;

&lt;p&gt;&lt;img title="Botão 1" src="http://www.mobits.com.br/assets/2011/12/1/button1.png" alt="Botão 1" /&gt; &lt;img title="Botão 2" src="http://www.mobits.com.br/assets/2011/12/1/button2.png" alt="Botão 2" /&gt;&lt;/p&gt;

&lt;p&gt;Aqui na empresa nós utilizamos muito esse artifício para botões que possuem o mesmo &lt;em&gt;background&lt;/em&gt;, economizando o trabalho do designer e também o tamanho do aplicativo.&lt;/p&gt;

&lt;h3&gt;Gradiente (Degradê)&lt;/h3&gt;

&lt;p&gt;Quando queremos utilizar algum tipo de gradiente nos nossos layouts, podemos criar um arquivo xml em &lt;em&gt;drawable&lt;/em&gt; da seguinte maneira:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"&amp;gt;
&amp;lt;gradient android:startColor="#7F9BA4" android:endColor="#59707D"
    android:angle="270" /&amp;gt;
&amp;lt;/shape&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O que ele faz nada mais é que determinar o formato do gradiente, no nosso caso é retangular, e as cores de início e fim. É bem simples e o resultado é igual ao de uma imagem feita do mesmo jeito. O mais legal é que você também economizará o trabalho do designer e o tamanho do aplicativo.&lt;/p&gt;

&lt;h3&gt;Borda arredondada&lt;/h3&gt;

&lt;p&gt;Abaixo, outra dica: implementar bordas arredondadas.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;shape xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt; 
    &amp;lt;solid android:color="#00FFFF" /&amp;gt; 
    &amp;lt;padding android:left="4dp" android:top="4dp" 
        android:right="4dp" android:bottom="4dp" /&amp;gt; 
    &amp;lt;corners android:radius="4dp" /&amp;gt; 
&amp;lt;/shape&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Basta você colocar na pasta &lt;em&gt;drawable&lt;/em&gt; e chamá-lo no &lt;em&gt;background&lt;/em&gt; de um &lt;em&gt;LinearLayout&lt;/em&gt;, por exemplo. Os cantos ficarão arredondados!&lt;/p&gt;

&lt;h3&gt;Diferentes estados de botão&lt;/h3&gt;

&lt;p&gt;Quando temos um botão em nosso layout, é importante exibir os seus diferentes estados para o usuário saber o que está acontecendo. Para isso, precisamos criar um arquivo xml em &lt;em&gt;drawable&lt;/em&gt; com o seguinte conteúdo, por exemplo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
    &amp;lt;item android:state_pressed="true"  android:drawable="@drawable/botao_selecionado" /&amp;gt;    
    &amp;lt;item android:state_focused="true" android:drawable="@drawable/botao_com_foco" /&amp;gt; 
    &amp;lt;item android:drawable="@drawable/botao_normal" /&amp;gt;
&amp;lt;/selector&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para usá-lo, basta chamá-lo no &lt;em&gt;background&lt;/em&gt; do botão em questão.&lt;/p&gt;

&lt;p&gt;Espero que essas dicas ajudem a vocês como me ajudaram. E se tiver outra, deixe seu comentário! Até breve :)&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/10/3/criando-lista-com-secoes-em-android"&gt;Criando lista com seções em Android&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/5/27/como-criar-cabecalho-e-rodape-no-android"&gt;Como criar cabeçalho e rodapé no Android&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2011/5/20/personalizando-fontes-no-android"&gt;Personalizando fontes no Android&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.mobits.com.br/2010/6/10/como-fazer-layouts-para-android"&gt;Como fazer layouts para Android&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/_BE6ga2bdl0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/12/1/dicas-de-layout-para-aplicativos-android</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Hildi</name>
    </author>
    <id>tag:www.mobits.com.br,2011-11-28:760</id>
    <published>2011-11-28T17:11:00Z</published>
    <updated>2011-12-22T14:19:40Z</updated>
    <category term="Blog" />
    <category term="Notícias" />
    <category term="rh" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/wcGQDgu3k1c/vaga-de-estgio-para-dispositivos-mveis" rel="alternate" type="text/html" />
    <title>Vaga de estágio para dispositivos móveis</title>
<summary type="html">&lt;p&gt;Venha aprender e desenvolver para dispositivos móveis!&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Venha aprender e desenvolver para dispositivos móveis!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ATUALIZADO&lt;/strong&gt;: Inscrições encerradas. Obrigado a todos que enviaram seus currículos.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.mobits.com.br/assets/2011/11/28/PanfletoVaga.png" width="400px" /&gt;&lt;/p&gt;

&lt;p&gt;Estamos em busca de um estagiário para participar de nossos projetos para dispositivos móveis. A oportunidade é para aprender e desenvolver nas seguintes plataformas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;Blackberry&lt;/li&gt;
&lt;li&gt;Outras (dependendo da demanda)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A carga horária é de 20h/semana no local (Centro) com horário flexível.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requisitos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Estar cursando o 5o período em diante;&lt;/li&gt;
&lt;li&gt;Bons conhecimentos em Java;&lt;/li&gt;
&lt;li&gt;Facilidade para aprender novas linguagens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Desejável&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contato com desenvolvimento Android;&lt;/li&gt;
&lt;li&gt;Experiência de trabalho em equipe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interessados, enviem currículo para rh[arroba]mobits.com.br&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/wcGQDgu3k1c" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/11/28/vaga-de-estgio-para-dispositivos-mveis</feedburner:origLink></entry>
  <entry xml:base="http://www.mobits.com.br/">
    <author>
      <name>Felipe Barreto</name>
    </author>
    <id>tag:www.mobits.com.br,2011-11-23:758</id>
    <published>2011-11-23T17:15:00Z</published>
    <updated>2011-11-23T17:16:37Z</updated>
    <category term="Blog" />
    <category term="desenvolvimento" />
    <category term="iphone sdk" />
    <link href="http://feedproxy.google.com/~r/Mobits-Blog/~3/DqwiblMvVEY/atalhos-de-teclado-para-o-xcode-4" rel="alternate" type="text/html" />
    <title>Atalhos de teclado para o Xcode 4</title>
<content type="html">
            &lt;p&gt;Há pouco tempo, publiquei um &lt;a href="http://mobits.com.br/2011/8/13/5-referencias-uteis-para-desenvolvedores-ios"&gt;artigo com algumas dicas&lt;/a&gt; para desenvolvedores iOS, incluindo uma lista com os principais atalhos de teclado para o Xcode 3.x. &lt;/p&gt;

&lt;p&gt;Contudo, com a migração para o Xcode 4, qualquer desenvolvedor que esteja acostumado com os atalhos antigos, poderá ficar &lt;del&gt;furioso&lt;/del&gt; perdido, pois além dos novos comandos, os atalhos antigos foram em grande parte alterados.&lt;/p&gt;

&lt;p&gt;Para ajudar a quem gosta de programar usando atalhos de teclado para tudo, seguem as listas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://pragmaticstudio.com/media/Xcode4Shortcuts.pdf"&gt;Principais atalhos&lt;/a&gt; (http://pragmaticstudio.com/)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cloud.github.com/downloads/Machx/Xcode-Keyboard-Shortcuts/Xcode_Shortcuts.pdf"&gt;Lista completa&lt;/a&gt; (http://cocoasamurai.blogspot.com/)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você &lt;del&gt;estiver revoltado&lt;/del&gt; sentir-se desconfortável com alguma mudança, também é possível reconfigurar facilmente os atalhos antigos em Xcode &gt; Preferences... &gt; Key Bindings&lt;/p&gt;

&lt;div class="relacionados"&gt;
  &lt;h4&gt;POSTS RELACIONADOS:&lt;/h4&gt;
    &lt;ul&gt;

      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/8/13/5-referencias-uteis-para-desenvolvedores-ios"&gt;5 referências úteis para desenvolvedores iOS&lt;/a&gt;&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/9/26/configurando-o-nszombieenabled-no-xcode-4"&gt; Configurando o NSZombieEnabled no Xcode 4 &lt;/a&gt;&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://mobits.com.br/2011/9/9/2-dicas-simples-para-trabalhar-com-nsnull"&gt;2 dicas simples para trabalhar com NSNull&lt;/a&gt;&lt;/li&gt;

    &lt;/ul&gt;
&lt;/div&gt;
          &lt;img src="http://feeds.feedburner.com/~r/Mobits-Blog/~4/DqwiblMvVEY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mobits.com.br/2011/11/23/atalhos-de-teclado-para-o-xcode-4</feedburner:origLink></entry>
</feed>

