Artigos com a tag 'xcode'
Depois de explicar como localizar as nossas cordas no Xcode , como vemos agora é simples - aplicando a mesma técnica - para localizar e visualizar as imagens / interfaces criadas com o Interface Builder.
Localize recursos gráficos
O processo, como mencionado, é o mesmo, se temos uma imagem já está incluído em nossos recursos, ou inserir um novo, e nós queremos "localizar" - isto é, gerenciamento de duas ou mais imagens com base nos idiomas suportados - basta clicar no botão Imagem à direita ( Adium.png neste exemplo) e selecione Get Info:

Nós clique em Criar Localizable arquivo no canto inferior esquerdo.

Clique em Adicionar e insira Localização Italian :

A fim de obter:

esattamente come accadeva con il testo: Nossa imagem é movido (fisicamente, uma das raras vezes quando isso acontece nell'alberatura Xcode é refletida no sistema de arquivos) em pastas virtuais English.lproj e Italian.lproj exatamente como aconteceu com o texto:

contiene una stessa versione dell'immagine. Neste ponto cada uma das pastas English.lproj e Italian.lproj contém a mesma versão da imagem. Esta imagem é manipulada dentro de Interface Builder, onde poderemos ver - por padrão - a versão em Inglês.
Neste ponto, simplesmente substituir um (ou ambos os arquivos Adium.png ) para se obter uma localização das imagens "flash".
Localize o XIB arquivos
Mesmo as interfaces construídas com Interface Builder pode ser localizado em sua totalidade, quando for considerado necessário. ) con interfaccia XIB , lo selezioniamo, scegliamo Get Info dal menu contestuale, rendiamo il file localizzabile, aggiungiamo la localizzazione in italiano: O procedimento é idêntico ao realizado com as capacidades gráficas: adicionar um ViewController (por exemplo infoViewController ) interface XIB, nós selecioná-lo, escolha Obter Informações no menu contextual, dar o localizável arquivo, adicionar localização em italiano:

Clique em Inglês ou Italiano irá abrir o Interface Builder! ) all'interno della classica cartella Classes . Desta vez, o sistema de arquivos, vamos notar que você criou dois diretórios ( English.lproj e Italian.lproj ) dentro da pasta Classes clássica. Ambos terão seus arquivos infoViewController.xib . O conforto no presente, claramente resolvida no código, quando vamos instanciar nosso código controlador teremos uma "limpa" como este:
1 2
| [ InfoViewController alloc ] ; InfoViewController * info = [InfoViewController alloc]; info.view ] ; [Self.view addSubview: info.view]; |
Como você pode ver não há qualquer vestígio de qualquer declaração relativa à localização, totalmente gerenciado pelo sistema. As duas interfaces, é claro, pode ser completamente diferente no que eles estão em todos os aspectos como dois XIB ficheiros separados.
Leia mais ...
1. Cordas em várias linhas
No Xcode, você pode "quebrar" uma string em várias linhas, inserindo no final com uma barra invertida "\". Este recurso pode ser útil quando, por exemplo, queremos inserir o texto HTML em um controle UIWebView :
Leia mais ...
Ícone do aplicativo
O 57 × 57 pixels ícone que irá representar a nossa aplicação é "prejudicado" automaticamente pelo iPhone da Apple: adiciona uma borda arredondada, um iluminado e 3D. Esta configuração pode ser alterada selecionando o arquivo [nome applicazione]-Info.plist e adicionar a propriedade "Ícone já inclui efeitos de brilho e de bisel":
Leia mais ...
XCode é um ambiente de desenvolvimento muito poderoso e reserva algumas surpresas. Ele permite que uma função semelhante ao "trecho" do famoso editor TextMate . Na prática, é possível inserir blocos de código utilizando a sequência de ESC + uma combinação de uma ou mais sequências de caracteres. e otterrete: Por exemplo, se você quiser inserir um bloco if tente pressionar ESC+if e você vai ter:

. Como mostrado na figura, aparece um menu (o mesmo auto-realização), onde você pode escolher entre um bloco simples if ou if/else . Ao clicar em "enviar", você ganha:

Aqui estão dois links para a lista completa de atalhos de teclado:
Leia mais ...
CGRectMake() é uma função (na verdade uma linha # define) muito utilizada, especialmente quando os objetos são criados por código ou interface gráfica do usuário. o UIImageView . CGRectMake() restituisce una struct (struttura di tipo) CGRect : Seu uso é, portanto, muitas vezes associada componentes de inicialização de UIKit , mas também a simples UIView ou UIImageView . CGRectMake() retorna um struct (tipo de estrutura) CGRect :
1 2 3 4 5
| struct {CGRect CGPoint origem; CGSize tamanho; }; typedef struct CGRect CGRect; |
: Que por sua vez é composto de dois diferentes struct CGPoint e CGSize :
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct {CGPoint CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint;
/ Tamanhos *. * /
struct {CGSize CGFloat largura; CGFloat altura; }; CGSize CGSize typedef struct; |
. Isso, por sua vez, novamente, conter tipos CGFloat ou tipos de float . Se analisarmos o código de CGRectMake () são:
1 2 3 4 5 6 7 8
| CG_INLINE CGRect CGRectMake (CGFloat x, y CGFloat, largura CGFloat, CGFloat altura) { CGRect rect; y; rect.origin.x = x; rect.origin.y = y; height; rect.size.width width =; rect.size.height = altura; voltar rect; } |
Segue-se, portanto, que esta parte do código:
1 2 3 4
| [ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 12 , 409 , 100 , 40 ) ; gbutton.frame = CGRectMake (12, 409, 100, 40); @ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Press" forState: UIControlStateNormal]; gbutton ] ; [MainWindow addSubview: gbutton]; |
Ele poderia muito bem ser escrito como:
1 2 3 4
| [ UIButton buttonWithType : UIButtonTypeRoundedRect ] ; UIButton gbutton * = [UIButton buttonWithType: UIButtonTypeRoundedRect]; CGRect ) { 12 , 409 , 100 , 40 } ; gbutton.frame = (CGRect) {12, 409, 100, 40}; @ "Press" forState : UIControlStateNormal ] ; [Gbutton setTitle: @ "Press" forState: UIControlStateNormal]; gbutton ] ; [MainWindow addSubview: gbutton]; |
Só para acelerar as coisas "o código está sendo executado ... 
Leia mais ...
Xcode é um ambiente de desenvolvimento muito bom, agradável e cheio de detalhes que fazem a escrever código eficiente e agradável. Entre eles está certamente a conveniência do auto-completar ao digitar, especialmente quando se escreve aplicativos para o iPhone da Apple, onde os quadros são muitos e lembre-se de sintaxe e de nomenclatura está realizando alguns.
Leia mais ...
Usando as Preferências do Xcode, você pode definir o comportamento da atmosfera durante a fase de depuração de um aplicativo para iPhone. As configurações padrão, na verdade, são muito desconfortáveis quando você tenta e tenta de novo um aplicativo, por exemplo, após o lançamento da nossa aplicação, você deve manualmente abrir a janela de console para ver a saída de vários NSLog() . Xcode também permite que as sessões anteriores de modo que tivemos de limpar para fora da janela com a mão. Felizmente, você pode resolver o problema, transformando as preferências:

Como mostrado na figura acima, basta selecionar um item no menu Iniciar na janela de depuração para decidir que abrem automaticamente no arranque da nossa appicazione (I definir Consoles e Debugger, mas você pode escolher os fatos melhor que você). À direita, em seguida, encontramos Auto Console Debug claro, assim você sempre começar com o Console limpo.
Leia mais ...
Como mencionado iPhone FirstApp: Adivinhe o número - Parte 1 vemos como fazer um aplicativo para o iPhone da Apple sem usar o Interface Builder! Na verdade, vamos eliminar arquivos físicos criados pela Interface Builder assistente Xcode. No final deste post, então, temos um pedido idêntico em todos os aspectos, àquelas construídas na primeira parte, com a diferença que nós vamos alcançar todos os nossos componentes visuais, incluindo a janela principal, para o código completo.
O aplicativo já feito, se você quiser apenas fazer o download, está disponível no meu repositório do Google Code:
Eu gostaria de apontar imediatamente como o ZIP deste exemplo pesa menos que a última vez! 
Criamos o projeto
Começamos criando o nosso projeto SecondApp (para distingui-lo de FirstApp), embora desta vez escolha Janela aplicativo baseado em:

Agora vamos apagar tudo relacionado com o Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Elimine o arquivo MainWindow.xib , localizado na pasta de Resources , remova-o do sistema de arquivos também, e em seguida, selecione também mover para a lixeira. nella casella Main nib file base name : Selecione então o arquivo SecondoApp-info.plist e excluir a referência ao MainWindow arquivo nib no nome da caixa principal com base em:

Neste ponto não temos mais qualquer janela, pelo menos até o Interface Builder. , e modifichiamo la funzione main() in questo modo: Então vamos abrir o arquivo main.m , situado em Other Sources , e modificar a função main() , exemplo:
1 2 3 4 5 6 7 8 9 10 11
| int argc, char * argv [ ] ) { int main (int argc, char * argv []) { pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool piscina * = [[ NSAutoreleasePool alloc] init]; / / Ao remover o arquivo. XIB perdemos rastreamento / / O delegado app e então passá-lo para "mão" UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retVal = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate"); ; [Lançamento Piscina]; voltar retVal; } |
Abra SecondAppAppDelegate.me então criar a janela principal via código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void ) applicationDidFinishLaunching : ( UIApplication * ) application { - ApplicationDidFinishLaunching (Void): (UIApplication *) {aplicação
/ / Pega o tamanho da tela (320, 480) UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[mainScreen UIScreen] applicationFrame]; / / Cria uma janela - como fizemos adeus ao Interface Builder [ [ UIWindow alloc ] initWithFrame : windowRect ] ; UIWindow MainWindow * = [[UIWindow alloc] initWithFrame: windowRect]; / / Definir o fundo da Janela para o amarelo, para diferenciar / / O pedido anterior FirstApp [ UIColor yellowColor ] ] ; [MainWindow SetBackgroundColor: [UIColor yellowColor]];
mainWindow ] ; [Self setWindow: MainWindow]; ; [Janela makeKeyAndVisible];
; [MainWindow release]; } |
Você já pode testar o aplicativo, se aparece uma janela amarela que você fez tudo certo!
, necessario solo se si usa Interface Builder. No arquivo SecondAppAppDelegate.h podemos eliminar IBOutlet , só é necessário se você usa o Interface Builder. Também acrescentar aqui que nossas variáveis globais, a última vez que tinha entrado no controlador. Em seguida, modifique o arquivo SecondAppAppDelegate.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # Importar <UIKit/UIKit.h> NSObject <UIApplicationDelegate> { @ SecondAppAppDelegate Interface: NSObject {<UIApplicationDelegate> UIWindow janela *; UITextField * número; UIButton * botão; int numeroACaso; } nonatomic, retain ) UIWindow * window; @ Property (nonatomic, reter) UIWindow janela *; void ) controllaNumero; - (Void) getNumber; @ End |
, in quanto non stiamo usando Interface Builder. Também neste caso, nós preparamos a definição do método controllaNumero , como da última vez, mas nós eliminamos a indicação IBAction , uma vez que não estamos usando o Interface Builder.
Nós construímos o código da interface
É hora de criar o código usando todos os componentes de nossa interface. ed inseriamo il seguente codice: Voltamos no arquivo SecondAppAppDelegate.m , posizioniamoci antes [mainWindow release] e insira o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| / / Cria a barra de título [ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0,0, 0,0, 320,0, 44,0)]; myNavigationBar.barStyle = UIBarStyleDefault; [ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Acho que um número"]; navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animado: NO]; myNavigationBar ] ; [Janela addSubview: myNavigationBar];
/ / Criar o rótulo [ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel myLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)]; UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor]; ; myLabel.numberOfLines = 2; "iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "iPhone criou um número de 1 a 10, tentar adivinhar?" myLabel ] ; [Janela addSubview: myLabel];
/ / Criar a entrada de texto UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; = número [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)]; numero.borderStyle = UITextBorderStyleRoundedRect; numero.textAlignment = UITextAlignmentCenter; numero.keyboardType = UIKeyboardTypeNumberPad; "Inserisci il numero" ; numero.placeholder = @ "Digite o número"; numero ] ; [Janela addSubview: número];
/ / Cria o botão UIButton buttonWithType : UIButtonTypeRoundedRect ] ; botão = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 10 , 180 , 300 , 30 ) ; bottone.frame = CGRectMake (10, 180, 300, 30); @ "Premi qui" forState : UIControlStateNormal ] ; [Botão setTitle: @ "Clique aqui" forState: UIControlStateNormal]; self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; Botão [AddTarget: acção de auto: @ selector (getNumber) forControlEvents: UIControlEventTouchUpInside]; bottone ] ; [Janela addSubview: botão];
; [MyLabel release]; ; [NavigationItem release]; ; [MyNavigationBar release]; |
della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Desde o ' applicationDidFinishLaunching corresponde a viewDidLoad como da última vez, logo após a [mainWindow release]; inserção:
1
| + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random () 10%; |
Agora, podemos fazer é implementar o método controllaNumero , que será idêntico (para além do protótipo) à utilizada a última vez:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| void ) controllaNumero { - (Void) {getNumber "Premuto bottone di controlla numero" ) ; NSLog (@ "número de controle pressionado o botão"); [ numero.text integerValue ] ; numeroInserito int = [numero.text integerValue]; message; NSString * mensagem; "Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "O número digitado é% d", numeroInserito); numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) { "Troppo basso..." ; mensagem = @ "muito baixo ..."; ( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) { "Troppo alto..." ; mensagem = @ "muito alto ..."; ( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) { "Bravo hai indovinato" ; mensagem = @ "Bravo você adivinhou-lo"; + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random () 10%; "Numero pensato %d" , numeroACaso ) ; NSLog (@ "% d Número pensei," numeroACaso); } [ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc] "Responso" initWithTitle: @ "Resposta" mensagem: mensagem delegado: nil "OK" cancelButtonTitle: @ "OK" ] ; otherButtonTitles: nil]; ; [AlertMessaggio show]; ; [AlertMessaggio release]; "" ; numero.text @ = ""; } |
Nós somos feitos!
Conclusões e considerações
, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Este exemplo não fazer uso direto de um UIView ou UIViewController , porque eu queria deixá-lo tão simples e aligeirados quanto possível e, também, para mostrar que os elementos não são sempre necessários. No entanto, a inserção de objetos diretamente na janela pode ter algum sentido neste exemplo e em outros contextos esporádicos. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. O uso de UIView e UIViewController ainda trazer benefícios em muitos outros casos, ena alguns são quase indispensáveis, como veremos no futuro.
Leia mais ...
XCode é muito poderoso e versátil e fornece o programador com muitas características úteis e simples de usar. Ao escrever código complexo, ou pelo menos articulada, torna-se importante para organizar o seu código para que você não perca tempo procurando funções espalhadas em linhas longas de código. Depois de comentar, a primeira coisa e mais importante a fazer, o ambiente XCode fornece orientações (bom) para melhorar a usabilidade e legginilità dentro do desenvolvimento. Uma destas é a directiva #pragma mark que se torna muito útil na organização de grupos de código e métodos.
Na foto abaixo você pode ver a parte de código do meu projeto PragmaTest :

O menu superior dropdown permite listar todos os métodos de nossa classe. Agora, se ligarmos o nosso método sobre a directiva #pragma mark que tem uma sintaxe:
Obtemos:

A primeira #pragma mark com um hífen (-) insere uma linha separadora. O segundo é um texto (rótulo) a gosto. Você pode adicionar a seguinte declaração em que você deseja, organizando o código como você vê o ajuste. Além disso, você também pode inserir várias linhas pragma, digite:
1 2 3 4 5 6
| # Pragma marca - # Pragma marca / ** # * Pragma marca Usando o pragma # * Pragma marca em várias linhas de código # Pragma marca * / void ) mioMetodo { } - MyMethod (void) {} |
Leia mais ...
Para os desenvolvedores só registar já foi lançado uma nova versão do SDK para o iPhone da Apple, por isso agora é hora de instalar o SDK 3.0, assim, atualizar todo o ambiente de desenvolvimento Xcode para versão 3.1.3. Se você já tiver atualizado você deve ter notado que a criação de um novo projeto parece faltar o velho SDK 2.2.1 (incluindo outros).

Na realidade, está tudo aqui na nossa máquina, você pode simplesmente executar um procedimento simples para magicamente restaurar todo o nosso SDK anterior, para testar a nossa aplicação para o iPhone da Apple é o 3.0 SDK que com versões anteriores 2.2.1 e inferiores. Selecione o projeto, abra o menu de contexto e selecione Get Info:

Na janela que se abre, a primeira aba Geral, selecione o SDK base inferior para todas as configurações e restaurou o SDK 2.2.1 (ou whatever).

Sem que, magicamente, o menu será exibido novamente todos os XCode SDK 3.0, incluindo

Leia mais ...
Últimos Comentários
Giovambattista Fazioli : @ GM: Se você fazer upload de imagens para um servidor diferente (que o WordPress não pode ...
GM : Oi, desculpe ressuscitar um post antigo, mas eu espero que você possa me dar uma mão. Como eu, com este método, ...
Giovambattista Fazioli : @ Fabio: um post do passado! Eu recomendo usar as características mais convenientes de abas agora ...
Fabio : Olá, pesquisando na web encontrei este artigo para criar a sua faixa de guia javascript com php e css, mas ...
Miriam : O que você acha do Disqus? Eu estou usando ele e eu adoro isso.