Artigos com a tag 'UILabel'

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.

UITableView

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

Leia mais ...

iPhone: estender uma classe UIView

creato. Quero mostrar como é possível, de uma forma simples e rápida, estender uma classe UIView de tal maneira que responde a um método de inicialização de novo contendo ainda o código objecto para personalizar UIView criado. Como alguns de vocês provavelmente sabem, Objective-C não suporta um único fabricante como nas línguas objeto outras orientadas (como o Adobe ActionScript ou PHP5). E 'pode, de fato, criar uma instância de uma classe manualmente invocando diferentes fabricantes (quase infinita). . Normalmente, são usados ​​para criar objetos UIView com o clássico initWithFrame . Suponha que, no entanto, queremos criar uma nova classe de objetos visuais, a partir de um UIView , com alguma adição, esse rótulo é incorporado. . Basicamente o que nós queremos é que instanciar o nosso objeto que ele cria, bem como o UIView , um objeto do tipo UILabel . Por exemplo, podemos querer chegar ao fim:

1
[ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel * vl = [[ViewLabel alloc] initWithLabelDefine: CGRectMake rótulo (0, 0, 320, 80): @ "Olá"];

: Para isso basta criar uma nova classe de tipo UIView e chamada ViewLabel :

1
2
3
4
5
6
7
8
9
10
11
12
13
/ /
/ / ViewLabel.h
/ /

# Importar <UIKit/UIKit.h>

UIView { @ Interface ViewLabel: UIView {
UILabel * internalLabel;
}

id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine; - (Id) initWithLabelDefine: (CGRect) rótulo de quadro: ( NSString *) labelDefine;

@ End
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
33
34
35
36
37
38
39
40
41
42
43
44
/ /
/ / ViewLabel.m
/ /

# Importar "ViewLabel.h"

@ Implementação ViewLabel

id ) initWithFrame : ( CGRect ) frame { - (Id) initWithFrame: frame (CGRect) {

self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: frame]) {
/ Inicialização / código
}
retornar auto;
}

/ /
/ / Inicializador nosso novo
/ /
id ) initWithLabelDefine : ( CGRect ) frame label : ( NSString * ) labelDefine { - (Id) initWithLabelDefine: (CGRect) rótulo de quadro: ( NSString *) {labelDefine

self = [ super initWithFrame : frame ] ) { if (self = [super initWithFrame: frame]) {
/ / Aqui você pode decidir como se comportar, eu para
/ / Eu tenho o mesmo quadro de segurança no passado
/ / Entrada mas eu redefinir a x e y
; frame.origin.x = 0;
; frame.origin.y = 0;
UILabel alloc ] initWithFrame : frame ] ; internalLabel = [[UILabel alloc] initWithFrame: quadro];
internalLabel.text = labelDefine;
internalLabel ] ; [Self addSubview: internalLabel];
; [InternalLabel release];
}
retornar auto;
}

void ) drawRect : ( CGRect ) rect { - (Void) drawRect: (CGRect) {rect
Código / Desenho /
}

void ) dealloc { - (Void) {dealloc
; [Super dealloc];
}

@ End

Na época da criação da nossa nova classe, podemos usar:

1
[ [ ViewLabel alloc ] initWithLabelDefine : CGRectMake ( 0 , 0 , 320 , 80 ) label : @ "Ciao" ] ; ViewLabel * vl = [[ViewLabel alloc] initWithLabelDefine: CGRectMake rótulo (0, 0, 320, 80): @ "Olá"];

Leia mais ...

iPhone SecondApp: Adivinhe o número - Parte 2

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:

newproject

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:

deleteib

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

iPhone FirstApp: Adivinhe o número - Parte 1

A primeira fonte que eu fui em suas mãos foi escrito em Basic e consistia de algumas linhas de código, para iluminar-me. Era um jogo simples que gerou um número aleatório de 1 a 10 e, através da entrada de teclado, provou que o número digitado foi Maggione, inferior ou igual ao número aleatório. Apesar de sua simplicidade rude continua a ser, para mim, um dos melhores exemplos - simples, divertido e prático - para explicar a quem não sei nada sobre programação que se entende realmente de "programa de computador". Então eu decidi propor-lo para o iPhone da Apple, talvez ajude alguém ...

Leia mais ...


Pare SOPA