Uma maneira fácil de guardar uma imagem na foto do interior do nosso dispositivo de aplicação (ou carregados remotamente):
"Objective-C 'Categoria
Muito curto trecho: gravar uma imagem no álbum de fotos
NSURLConnection: Exemplo de utilização
NSURLConnection permite realizar uma cotrollata ligação a um servidor remoto. Para usá-lo:
1 2 3 4 5 6 7 8 9 10 11 | / / Os objectos suficiente para realizar uma NSURLConnection urlConnection; NSURLConnection * URLConnection; mutableData; NSMutableData mutableData *; / / ... urlString = @ "http://www.miodominio.com/documento.txt" ; NSString * urlString @ = "http://www.miodominio.com/documento.txt"; urlRequest = [ NSURLRequest requestWithURL : [ NSURL URLWithString : urlString ] ] ; NSURLRequest urlRequest * = [ NSURLRequest requestWithURL: [ NSURL URLWithString: urlString]]; / / O delegado irá responder a estados de conexão NSURLConnection alloc ] initWithRequest : urlRequest delegate : self ] ; URLConnection = [[ NSURLConnection alloc] initWithRequest: urlRequest delegado: auto]; |
Aqui estão os métodos de delegado para verificar o status da conexão:
[Cc_objc]
Muito curto trecho: Objective-C, Selector de NSString
Objective-C é uma linguagem maravilhosa que permite-lhe fazer coisas incríveis. Um dos aspectos mais interessantes é a sua chamada dinâmica de métodos (mensagens). É possível, de facto, para obter o endereço de uma mensagem de uma corda.
Muito curto trecho: UIWebView, e exibir arquivos PDF dentro
O objecto UIWebView pode ser usado para a exibição de numerosos arquivos. Por exemplo, você pode usá-lo para exibir - assim como filmes QuickTime ou do YouTube - arquivos PDF ou HTML em nosso próprio código.
NSString
NSString é uma classe muito poderosa, deixe-me mostrar-lhe algumas das propriedades mais utilizados:
printf ()
1 2 |
Execute o split ()
1 2 3 |
Converter de string para valor
1 2 3 | / / Convertendo doubleString = @ "123" ; NSString * doubleString @ = "123"; [ doubleString doubleValue ] ; valor duplo = [doubleString doubleValue]; |
Dentro de uma seqüência
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | / Substring / searchString = @ "age" ; NSString * searchString = @ "idade"; beginsTest = @ "Agencies" ; NSString * beginsTest @ = "agências"; [ beginsTest rangeOfString : searchString NSRange prefixRange = [beginsTest rangeOfString: searchString NSAnchoredSearch | NSCaseInsensitiveSearch ) ] ; opções: (NSAnchoredSearch | NSCaseInsensitiveSearch)]; / / PrefixRange = {0, 3} endsTest = @ "BRICOLAGE" ; NSString * endsTest = @ "DIY"; [ endsTest rangeOfString : searchString NSRange suffixRange = [endsTest rangeOfString: searchString NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch ) ] ; opções: (NSAnchoredSearch | NSCaseInsensitiveSearch | NSBackwardsSearch)]; / / SuffixRange = {6, 3} |
Muito curto trecho: compor e-mails para um iPhone, iPod ou iPad
Para compor um e-mail no iPhone / iPod basta adicionar o quadro MessageUI . No nosso controlador para entrar a inclusão do quadro e aplicar o protocolo MFMailComposeViewControllerDelegate :
Objective-C métodos de classe e alloc auto
davanti al prototipo, tipo: Quando definir e usar métodos (mensagens) em Objective-C, que são frequentemente confrontados com a sintaxe curiosa que mostra um sinal - ou + na frente do protótipo, digite:
1 2 3 4 5 6 7 | / / Na definição void ) mioMessaggio; - (Void) mioMessaggio; / / Da mesma forma, na aplicação void ) mioMessaggio { - (Void) {mioMessaggio / / ... } |
Ou:
1 2 3 4 5 6 7 | / / Na definição void ) mioMessaggio; + (Void) mioMessaggio; / / Da mesma forma, na aplicação void ) mioMessaggio { + (Void) {mioMessaggio / / ... } |
A diferença reside no facto de que os métodos definidos pelo símbolo - são métodos, por exemplo, e, em seguida, ligado a um objecto. Os métodos definidos pelo símbolo + são chamados de métodos de classe, como pode ser realizada sem alocação e instanciar o objeto em questão.
sono due classi, molto usate, che contengono svariati metodi di classe. NSString ou UIView duas classes, amplamente utilizado, que contêm vários métodos da classe. Métodos de classe são usados constantemente, como quando inicializar ou atribuir qualquer objeto:
1 | [ UIView alloc ] ; MyView UIView * = [UIView alloc]; |
O método alloc é um exemplo clássico, presente em todos os objectos e, como evidenciado pelo código, é um método de classe tal como reivindicado antes da aplicação do próprio objecto.
Métodos de classe pode ser útil em muitos casos, particularmente quando criamos nosso objeto e queremos alocar e inicializar-lo em menos linhas de código possível. Imagine ter que recolher uma matriz em um conjunto de objetos definidos por nós. Nós definimos o nosso primeiro objeto, escrever o código da forma mais simples, sem usar os métodos da classe:
1 2 3 4 5 6 7 8 9 10 | / DEFINIÇÃO / a interface em myObject.h # Importar <Foundation/Foundation.h> NSObject { @ Interface myObject: NSObject { name; NSString * nome; lastname; NSString * sobrenome; } nonatomic, retain ) NSString * name; @ Property (nonatomic, reter) NSString * nome; nonatomic, retain ) NSString * lastname; @ Property (nonatomic, reter) NSString * apelido; |
A aplicação, no caso mais simples, pode ser nada ou:
1 2 3 4 5 6 7 8 9 10 11 12 | / / MyObject.m # Importar "myObject.h" @ Implementação myObject @ Name sintetizar, sobrenome; void ) dealloc { - (Void) {dealloc ; [Lançamento Nome]; ; [Lançamento Lastname]; ; [Super dealloc]; } |
Quando é que vamos usar o nosso objeto, podemos usar código como este:
1 2 3 | [ myObject alloc ] ; myObject * obj = [myObject alloc]; "Mario" ; obj.name @ = "João"; "Rossi" ; obj.lastname @ = "Smith"; |
Se quiséssemos criar muitos objetos deste tipo, e colocá-los em um NSArray , a situação torna-se um pouco estranho:
1 2 3 4 5 6 7 8 9 10 11 12 | [ myObject alloc ] ; objA * myObject = [myObject alloc]; "Mario" ; objA.name @ = "João"; "Rossi" ; objA.lastname @ = "Smith"; [ myObject alloc ] ; objB * myObject = [myObject alloc]; "Carlo" ; objB.name @ = "Charles"; "Bianchi" ; objB.lastname @ = "Smith"; elenco = [ NSArray arrayWithObjects : objA, objB, nil ] ; NSArray * lista = [ NSArray arrayWithObjects: objA, objB, nil]; ; [ObjA release]; ; [ObjB release]; |
per aggiungere man mano gli oggetti nel nostro elenco. Poderia melhorar o código criando um loop for ou usando um NSMutableArray adicionar como objetos em nosso diretório. . No entanto, o migliorebbe situação um pouco, ocasionalmente permanecer fora as configurações de propriedade name e lastname . Seria, então, espontânea, para começar, adicione um método - objeto - initWithName que lhe permitem saltar para as configurações de propriedade, as coisas semplificandoci um pouco. No arquivo de implementação myObject.m acrescentar:
1 2 3 4 5 6 7 | id ) initWithName : ( NSString * ) stringName lastname : ( NSString * ) stringLastname { - (Id) initWithName: ( NSString *) lastname StringName: ( NSString *) {stringLastname self = [ super init ] ) { if (self = [super init]) { self.name = StringName; self.lastname = stringLastname; } retornar auto; } |
Ao fazer isso, temos melhorado a situação, eles podem agora escrever:
1 2 3 4 5 6 7 | [ [ myObject alloc ] initWithName : @ "Mario" lastname : @ "Rossi" ] ; objA * myObject = [[myObject alloc] initWithName: @ "Mario" sobrenome: @ "Smith"]; [ [ myObject alloc ] initWithName : @ "Carlo" lastname : @ "Bianchi" ] ; objB * myObject = [[myObject alloc] initWithName: @ "Charles" sobrenome: @ "Smith"]; elenco = [ NSArray arrayWithObjects : objA, objB, nil ] ; NSArray * lista = [ NSArray arrayWithObjects: objA, objB, nil]; ; [ObjA release]; ; [ObjB release]; |
, necessari per l'inserimento nell'array e liberare la memoria. Abbiammo ainda assim ponteiros objA e objB , necessários para a entrada na matriz e memória livre. Desejando que pudéssemos entrar directamente na criação de um objeto em preencher a matriz, com autorelease de memória livre, mas o código ainda não ocioso. Deixe-me demonstrar como resolver o problema com um método de classe. Primeiro de tudo, substituir o nosso - (id)initWidthName com:
1 2 3 4 5 6 7 8 9 10 | id ) initWithName : ( NSString * ) name lastname : ( NSString * ) lastname { + InitWithName (Id): ( NSString *) lastname nome: ( NSString *) {apelido myObject * item; item = [ [ self alloc ] init ] ) { if (item = [[auto alloc] init]) { / / Init item.name = nome; item.lastname = sobrenome; } item autorelease ] ; retorno [item autorelease]; } |
Ao fazer isso, criamos um método de classe que aloca (em autorelase) e iniziallizza nosso assunto, antes que você tenha o ponteiro para a instância. O código usado é então:
1 2 3 4 |
Muito, muito melhor ...
iPad: telas de boot do punho
Em Apple iPhone e iPod foram usados para gerenciar um único arquivo de imagem para carregar o aplicativo, o arquivo Default.png . Em iPad Apple, no entanto, a gestão diferente dell'orientamente requer a adoção de múltiplos arquivos de imagem, para ter certeza que você ver a tela inicial all'orientamente corrigido para o dispositivo. Durante a inicialização do aplicativo, como aconteceu com o iPhone, não é possível tirar o código para "maravilha" que o dispositivo orientado. Felizmente, ele foi introduzido no carregamento automático de arquivos especiais sobre a orientação:

Os ficheiros são suportados, para além do clássico Default.png que nunca se deve usar porque é dimensionado e deformada de acordo com a orientação, são:
- Padrão Portrait.png-
- Padrão PortraitUpsideDown.png-
- Padrão Landscape.png-
- Padrão LandscapeLeft.png-
- Padrão LandscapeRight.png-
e LandscapeRight possono essere utilizzate per determinare orietamento e verso di quest'ultimo. As versões PortraitUpsideDown , LandscapeLeft e LandscapeRight pode ser usado para determinar orietamento e para o último.
Para o aplicativo começa, então, como recomendado pela Apple, é bom para "redesenhar" - se necessário - as nossas opiniões agindo dentro application:didFinishLaunchingWithOptions .
Personalize as seções em um UITableView Agrupados
potremmo aver necessità di personalizzare la grafica dei titoli delle sezioni, come California o New York dell'esempio qui sotto. Quando usamos um UITableView estilo Grouped podemos precisar para personalizar o layout de títulos das seções, como a Califórnia ou Nova Iorque o exemplo abaixo.

Para fazê-lo, por favor use o seguinte código, colocando-a ao delegado, ou seja, a classe que responde ao protocolo UITableViewDelegate :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | / / Eu retornar a minha exibição personalizada, neste caso um objeto / Tipo / UILabel UIView * ) tableView : ( UITableView * ) tableView - (UIView *) tableView: (UITableView *) tableView NSInteger ) section { viewForHeaderInSection: seção (NSInteger) { [ [ [ UILabel alloc ] initWithFrame : CGRectZero ] autorelease ] ; UILabel * label = [[[UILabel alloc] initWithFrame: CGRectZero] autorelease]; UIFont boldSystemFontOfSize : 20 ] ; label.font = [UIFont boldSystemFontOfSize: 20]; label.textAlignment = UITextAlignmentCenter; UIColor blackColor ] ; label.shadowColor = [UIColor blackColor]; 1 , 1 ) ; label.shadowOffset CGSizeMake = (1, 1); "Sezione" ; // Sostituire con un array come al solito Label.Text @ = "Seção", / / Replace com uma matriz, como de costume UIColor whiteColor ] ; label.textColor = [UIColor whiteColor]; UIColor clearColor ] ; label.backgroundColor = [UIColor clearColor]; ; label.opaque = NO; voltar rótulo; } / / Devemos também apoiar esta mensagem não irá funcionar CGFloat ) tableView : ( UITableView * ) tableView - (CGFloat) tableView: (UITableView *) tableView NSInteger ) section { heightForHeaderInSection: seção (NSInteger) { ; voltar 44; } |
É também importante incluir heightForHeaderInSection , não irá funcionar.
Notas de Interesse
o UIImageView , ho utilizzato per inizializzare il frame CGRectZero che corrisponde a CGRectMake(0,0,0,0) . Na criação do nosso UILabel , querendo que também poderia ser um objeto mais complexo, como um UIView ou UIImageView , eu usado para inicializar o frame CGRectZero o que corresponde a CGRectMake(0,0,0,0) .
Como chegar Latitude e Longitude em Objective-C
O quadro MapKit oferece muitos recursos úteis, com exceção do retorno de Latitude e Longitude de um endereço. Em JavaScript, por exemplo, você pode usar o serviço prestado pelo Google Geocoding e discutidos em Google Maps: Como obter Latitude e Longitude de um endereço . Em Apple iPhone ou iPad, no entanto, você pode superar o obstáculo usando um diferentes serviços do Google. Especificamente, você pode chamar diretamente o url:
1 | http://maps.google.com/maps/geo?q = [endereço] saída & = csv |
Onde está [indirizzo] para entrar na cadeia com o endereço que deseja transformar as coordenadas. A saída retornado é do tipo:
1 | 200,8,41.9128300,12.2241172 |
). O primeiro valor, 200 , indica que tudo correu bem ( 200 OK ). A segunda, 8 , é o parâmetro de precisão Google (1-10). Os dois últimos valores são, por fim, a latitude ea longitude. Agora vemos um protótipo de um método pode ser incluído nas nossas candidaturas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | CLLocationCoordinate2D ) getLocationFromAddress : ( NSString * ) address { - (CLLocationCoordinate2D) getLocationFromAddress: ( NSString *) {endereço urlString = [ NSString stringWithFormat : @ "http://maps.google.com/maps/geo?q=%@&output=csv" , NSString * urlString = [ NSString stringWithFormat: @ "% @ http://maps.google.com/maps/geo?q = output = csv &" NSUTF8StringEncoding ] ] ; [StringByAddingPercentEscapesUsingEncoding Endereço: NSUTF8StringEncoding]]; listItems = [ locationString componentsSeparatedByString : @ "," ] ; NSArray * ListItems = [locationString componentsSeparatedByString: @ ""]; / / Int zoom = 0; 0.0 ; latitude duplo = 0,0; 0.0 ; double longitude = 0,0; listItems count ] > = 4 && [ [ listItems objectAtIndex : 0 ] isEqualToString : @ "200" ] ) { if ([ListItems count]> = 4 && [[objectAtIndex ListItems: 0] isEqualToString: @ "200"]) { / / Zoom [objectAtIndex [ListItems: 1] intValue] =; listItems objectAtIndex : 2 ] doubleValue ] ; latitude = [[objectAtIndex ListItems: 2] doubleValue]; listItems objectAtIndex : 3 ] doubleValue ] ; longitude = [[ListItems objectAtIndex: 3] doubleValue]; { Else {} / / Erro } CLLocationCoordinate2D localização; location.latitude = latitude; location.longitude = longitude; retornar a localização; } |
Notas de Interesse
, alla stregua della funzione explode ( ) del PHP per intenderci. A seqüência retornada em locationString é "dividida" pelo método componentsSeparatedByString , como a função explode ( ) do PHP por exemplo. No exemplo eu propus que entrei - mas comentou - o código para recuperar até mesmo a precisão parâmetro Google, precisão ou fator de escala, denotada por zoom .
Fonte como
Para completar, eu fiz um pedido pequeno exemplo com o qual você pode tentar o método proposto acima, entrar em qualquer endereço eo iPhone vai exibir no mapa.
Agradeço a equipe devAPP para a inspiração deste artigo.








Últimos Comentários
Gabriel : Olá, interessante artigo. Eu preciso de algo semelhante, mas com algumas mudanças. Em um ...
sebastian : grande parcela - muito obrigado!
Assunto : muito útil mesmo! Eu tentei isso e é exatamente o que eu precisava. Agora eu quero saber como faço para obter ...
vik : Com a ajuda estratégica!
Pimenta : Olá, eu não sei se você é um dos criadores do plugin WP Bannerize. Tenho visto um ...