Crear un botón por código con Swift

Crear-un-botón-por-código-con-Swift

¿Quereis saber como crear un botón por código con Swift?

Crear-un-botón-por-código-con-SwiftComo 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»

Para aprender más sobre patrones de diseño, te recomiendo visitar mi plataforma de Cursos Online e inscribirte en alguno de ellos.

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

About The Author
iOS Developer & Instructor at CFE Apps. Enseño a crear aplicaciones iOS a todo el que quiera aprender.

15 Comments

  • Sandra 29/04/2015 @ 17:58

    Hola !!! quisiera aprender a hacer un botón y agregarle sonido, en swift, si pudieras ayudarme, te lo agradeceria mucho.

  • Monica Garcia 05/10/2015 @ 16:14

    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.

    • Sergio Becerril 08/10/2015 @ 02:09

      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

  • erika 29/12/2015 @ 11:39

    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 .

    • Sergio Becerril 29/12/2015 @ 11:52

      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

  • Raider 24/01/2016 @ 17:20

    ¡Buenas!

    Me gustaría saber, cómo puedo cambiar un valor en el código dándole click a un botón.

    Gracias

    • Sergio Becerril 27/01/2016 @ 14:03

      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

  • Luis Manuel Martí Jiménez 04/03/2016 @ 21:30

    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.

    • Sergio Becerril 05/03/2016 @ 12:26

      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

  • Rodrigo Gómez Saldaña 24/04/2017 @ 20:38

    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.

    • Sergio Becerril 24/04/2017 @ 20:57

      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

  • Issac alberto 31/08/2017 @ 04:05

    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

    • Sergio Becerril 01/09/2017 @ 02:07

      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

      • Issac alberto 02/09/2017 @ 06:58

        Exacto a lo de abrir una vista me referia, perdon aun soy algo nuevo en este lenguaje, muchas gracias lo checo, saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.