jueves, 17 de mayo de 2012

Crear vistas en iOS

Intro
Para esta entrada veremos como declarar diferentes tipos de vistas o contenido en iOS codificandolo nosotros mismos, sin el uso de storyboard. 
¿La diferencia? En lo personal me gusta no usar storyboard, una de las opciones esque nosotros manejamos el objeto creado, accesando a mas parametros de ese objeto e inclusive modificando sus tamaños.

Ventajas
Como mensioné, es mas bien el gusto de cada uno, pero en varios casos te facilita, ya que si vas a crear multiples vistas, labels y demas con diferentes tamaños que tienes como medidas es mucho mejor hacerlo por líneas de código y en lo personal, mas sencillo de enteder, que tener varias ventanas apuntando a todas.



Desarrollo
Los temas a ver es la creación de vista, label, botón e imagen.

Ventana
UIView *ventanaFondo = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //inicializamos la ventana con el
//nombre ventanaFondo, inicializando el frame con los tamanos del delegado
ventanaFondo.backgroundColor = [UIColor grayColor]; //A esta vista, contendra un color gris de fondo
[self.view addSubview:ventanaFondo]; //Agregamos la vista a la vista Padre (por lo general la llamamos con self.view)
view raw gistfile1.m hosted with ❤ by GitHub

Label
NSString *nombre = @"Creacion de un label"; //Creamos un string donde sera el nombre del contenido de nuestro label
UILabel *lnombre = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 500, 100)]; //Inicializamos nuestro label
//Nosotros le damos las medidas y la posicion con CGRectMake(margenX, margenY, tamanoX, tamanoY)
lnombre.backgroundColor = [UIColor clearColor]; //nuestro label tendra un fondo sin color
lnombre.font = [lnombre.font fontWithSize:25]; //Podemos dar el tamno de la letre e inclusive el tipo, en este caso su tamano es 25
lnombre.text = [NSString stringWithFormat:@"%@", nombre]; //Le agregamos el contenido que habiamos guardado
[ventanaFondo addSubview:lnombre]; //Agregamos nuestro label a la vista ventanaFondo
view raw gistfile1.m hosted with ❤ by GitHub

Botón
UIButton *boton = [[UIButton alloc] initWithFrame:CGRectMake(20, 100, 100, 50)]; //Creamos nuestro boton con las medidas dadas
[boton addTarget:self action:@selector(hola:) forControlEvents: UIControlEventTouchDown];
//Al boton le agregados metodo que al pulsar mandara llamar al metodo hola
[boton setTitle:@"Boton" forState:UIControlStateNormal]; //El boton tendra como titulo Boton y tendra un estado normal (parecera como un label)
boton.backgroundColor = [UIColor blackColor]; //Le agregamos un colo negro de fondo, si no le agregamos esto nuestro boton parecera un label como ya mencionado(yo lo puse asi para diferenciarlo).
[boton setTitleColor: [UIColor whiteColor] forState: UIControlStateNormal]; //Le agregamos un color a nuestro titulio
[ventanaFondo addSubview:boton]; //Agregamos el boton a la vistaFondo
view raw gistfile1.m hosted with ❤ by GitHub

Imagen
UIImageView *imagen = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"migesa.jpg"]]]; //Creamos una ImageView, que es una imagen y la inicializaremos con el nombre de migesa.jpg, que esta la tenemos guardada en nuestra carpeta Archivos de Xcode
imagen.frame = CGRectMake(10, 200, 115, 115); //Damos el tamano de nuestra vistaImagen
[ventanaFondo addSubview:imagen]; //Agregamos la imagen a la ventanaFondo
view raw gistfile1.m hosted with ❤ by GitHub


CGRectMake
Es una de las funciones mas útiles al crear vistas, nosotros donde nosotros daremos los parámetros para el tamaño de la imagen, los parámetros a recibir son 4:
  • Posición del eje x (donde empezará), partitiendo de la parte superior izquierda.
  • Posicion del eje y (donde empezará), partiendo de la parte superior izquierda.
  • Valor de x (alzance o tamaño que tendrá) partiendo donde se definió la posición de x.
  • Valor de y (alzance o tamaño que tendrá) partiendo donde se definió la posición de y.
En algunas ocasiones, nos resultará algo raro, si es que no estamos acostumbrados a crear vistas en otros lenguajes.



Código Completo
-(void)ventanaCrear
{
UIView *ventanaFondo = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ventanaFondo.backgroundColor = [UIColor grayColor];
[self.view addSubview:ventanaFondo];
NSString *nombre = @"Creacion de un label";
UILabel *lnombre = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 500, 100)];
lnombre.backgroundColor = [UIColor clearColor];
lnombre.font = [lnombre.font fontWithSize:25];
lnombre.text = [NSString stringWithFormat:@"%@", nombre];
[ventanaFondo addSubview:lnombre];
UIButton *boton = [[UIButton alloc] initWithFrame:CGRectMake(20, 100, 100, 50)];
[boton addTarget:self action:@selector(hola:) forControlEvents: UIControlEventTouchDown];
[boton setTitle:@"Boton" forState:UIControlStateNormal];
boton.backgroundColor = [UIColor blackColor];
[boton setTitleColor: [UIColor whiteColor] forState: UIControlStateNormal];
[ventanaFondo addSubview:boton];
UIImageView *imagen = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"migesa.jpg"]]];
imagen.frame = CGRectMake(10, 200, 115, 115);
[ventanaFondo addSubview:imagen];
}
view raw gistfile1.m hosted with ❤ by GitHub

Lo que hice fue crear un método, así que nosotros lo podemos mandar llamar en nuestro viewdidload con [self crearVentana];

Resultado
Aquí podemos ver como quedaron nuestas vista:


 El resultado de oprimirle al boton que imprime un hola


Bibliografía:
http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html

No hay comentarios:

Publicar un comentario