¿Quereis saber como crear un botón por código con Swift?
Como ya sabréis muchos de vosotros, tenemos varias opciones a la hora de crear objetos.
Podemos usarlos de la biblioteca y arrastrarlos a nuestros ViewControllers.
Pero también podemos crear objetos por código.
En esta entrada veremos como podremos crear un botón por código con Swift.
Antes de nada, quiero deciros que el procedimiento es prácticamente el mismo si lo que queremos es crear una etiqueta, o cualquier otro objeto.
Logicamente lo único que va a cambiar, son los métodos que usaremos para crear el objeto en cuestión.
Lo primero que hay que hacer es declarar la variable o constante a la clase que queramos usar:
let button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
Posteriormente daremos un tamaño y una posición en pantalla, lo haremos mediante la función del Framework Core Graphics CGRectMake.
Esta función nos va a pedir la posición en pantalla X, la posición en pantalla Y, su ancho y su alto en puntos por pulgada.
button.frame = CGRectMake(90, 100, 200, 100)
A continuación, una vez que hemos creado el botón, y le hemos dado una posición en pantalla y un tamaño, le enviaremos unos cuantos mensajes.
Podremos poner un titulo al botón por un estado dado, esto es que el botón tenga un texto cuándo no esté pulsado, pero podríamos poner otro texto diferente cuándo el usuario pulse el botón.
Usaremos el método setTitle: forState:
button.setTitle(«Clic Aquí», forState: UIControlState.Normal)
Seguramente queramos que nuestro botón haga algo cuándo sea pulsado por ejemplo.
Para acometer esta funcionalidad, por ejemplo que cuándo el botón sea pulsado se llame a una función o método, haremos lo siguiente:
button.addTarget(self, action: «botonPulsado:», forControlEvents:.TouchUpInside)
En la linea de código anterior estaríamos usando uno de los patrones de diseño que más se usan en el desarrollo iOS el patrón «target-action»
Si quisiéramos poner una imagen de fondo para crear un botón por código con Swift, lo haríamos de la siguiente manera:
button.setImage(UIImage (named: «America.png»), forState: .Normal)
Fijaros como también en esta ocasión, tenemos la posibilidad de establecer una imagen cuándo el botón no esté pulsado, y otra para cuándo sea pulsado.
Para poner un color de fondo en vez de una imagen, lo haríamos con la siguiente sentencia de código:
button.backgroundColor = UIColor.redColor()
Por último, nos faltaría mostrar esta vista sobre nuestra vista actual, escribiremos la siguiente linea de código:
self.view.addSubview(button)
Un apunte más para crear un botón por código con Swift
Quizá queramos redondear los limites de nuestro botón, para darle un aspecto mas cool.
Para redondear las esquinas de nuestro recién creado botón, podemos hacerlo así:
let cornerRad = CGFloat (20.0)
button.layer.cornerRadius = cornerRad
En la primera linea declaramos una constante con un valor.
En la segunda linea aplicamos una layer de tipo cornerRadius y le aplicamos el valor de nuestra constante.
Y este es el código final para crear un botón por código, con un color de fondo, y con los bordes redondeados:
let button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
let cornerRad = CGFloat (20.0)
button.layer.cornerRadius = cornerRad
button.frame = CGRectMake(90, 100, 200, 100)
button.setTitle(«Clic Aquí», forState: UIControlState.Normal)
button.addTarget(self, action: «botonPulsado:», forControlEvents:.TouchUpInside)
button.backgroundColor = UIColor.redColor()
self.view.addSubview(button)
Pues nada más, espero que a partir de ahora si quieres crear objetos en tiempo de ejecución, puedas hacerlo, pues la creación del botón, puede crearse al final de un método, de forma que si ese método se ejecuta, aparezca un botón, o cualquier otro objeto.
Si tienes alguna duda, deja un comentario. 😉
Hola !!! quisiera aprender a hacer un botón y agregarle sonido, en swift, si pudieras ayudarme, te lo agradeceria mucho.
Hola Sandra,
Puedes ver cómo hacer lo que pides en la siguiente entrada de mi Blog.
https://cfeapps.com/reproducir-sonidos-en-ios-con-swift/
Además podrás descargar un ejemplo con lo explicado en la entrada.
Gracias por pasarte por mi Blog y por comentar.
Un fuerte abrazo.
Sergio Becerril
Hola Sergio,
Me gustaría poder crear botones en iPhone6 y agregarle url de forma que al tocar el botón se abra una página web determinada.
Es eso posible?
Muchas gracias de antemano.
Hola Mónica,
Claro que es posible.
Podrías hacerlo con la siguiente linea de código:
UIApplication.sharedApplication().openURL(NSURL(string: «http://www.google.com»)!)
Un abrazo.
Sergio Becerril
Hola sergio
Me gustaria realizar inserciones en una base de datos , es decir , a un boton asignarle un valor y que al momento que sea pulsado se guarde el valor de este boton en una base de datos sqlite .
Hola Erika,
Encantado de saludarte.
La verdad es que necesitaría no uno, sino varios artículos para explicarte como hacer lo que quieres hacer.
En este momento estoy cerrando este magnifico año terminando algunos proyectos, cosa que apenas me deja tiempo para elaborar artículos en el Blog, no obstante me lo apunto, y quizá en el 2016 pueda escribir alguna entrada sobre esto.
Muchas gracias por visitar el blog y por comentar.
Un abrazo.
Sergio Becerril
¡Buenas!
Me gustaría saber, cómo puedo cambiar un valor en el código dándole click a un botón.
Gracias
Hola Raider,
En el articulo al crear el botón por código en esta linea:
button.addTarget(self, action: “botonPulsado:”, forControlEvents:.TouchUpInside)
Precisamente botonPulsado: es el método que se va a llamar cuándo se pulse el botón, entonces es tan sencillo como declarar e implementar ese método con lo que quieres que haga tu aplicación, algo así:
-(void)botonPulsado{
NSLog (@»HAZ ALGO»);
}
Gracias por visitar el Blog.
Un saludo.
Sergio Becerril
Se pueden crear varios botones dependiendo su número y posición de ciertos parámetros de la aplicación.
Me haces un mundo si me dices cómo.
Saludos. Luis.
Hola Luis Manuel,
Claro que se puede, solo debes establecer condiciones, ya sabes if-else y en esas condiciones pues crear botones.
No sé realmente que es lo que quieres, escríbeme un email diciéndome detalladamente que es lo que quieres y te intento ayudar.
Gracias por visitar el Blog y por comentar 😉
Un abrazo.
Sergio Becerril
Hola, quisiera saber como puedo hacer para que en mi juego de encontrar las diferencias cuando le des touch en la diferencia salga un circulo?
Saludos y Gracias.
Hola Rodrigo,
Tan sencillo como cambiar el background del botón con tu imagen.
Todas estas cosas y muchas más las podrás aprender en Campus iOS Online 😉
Gracias por visitar el Blog y por comentar.
Un abrazo!
Sergio becerril
Hola que tal, excelente articulo amigo, espero puedas ayudarme con una duda
Quiero que al apretar un boton se abra una ventana nueva, sabras de casualidad como seria el codigo? Gracias
Hola Isaac,
cuando dices «ventana» ¿te refieres a otra vista?
Si es eso, quizá este articulo te ayude, en el explico entre otras cosas, como cambiar de vista:
https://cfeapps.com/hola-mundo-con-swift
Un abrazo!
Sergio Becerril
Exacto a lo de abrir una vista me referia, perdon aun soy algo nuevo en este lenguaje, muchas gracias lo checo, saludos