¿Para qué se utiliza el programa Interface Builder en iOS?

Creo que Emil David tiene una gran respuesta a continuación, pero solo quería comentar * por qué * usarías Interface Builder, en lugar de hacer cosas programáticamente. Ambos métodos dan como resultado el mismo binario compilado cuando todo está dicho y hecho, entonces, ¿por qué elegiría usar Interface Builder sobre la creación de instancias de vistas en su código? En realidad, hay ventajas de hacerlo en ambos sentidos.

¿Por qué usar IB?

  • Porque puedes escribir menos código: esto debería ser bastante obvio. El principal atractivo de Interface Builder, especialmente para aquellos nuevos en el desarrollo de iOS es que puede arrastrar y soltar visualmente y conectar cosas sin tener que saber cómo hacerlo en código. Podrías escribir una aplicación completa usando solo Interface Builder. Menos código escrito significa menos que puede salir mal, menos errores, más fácil de mantener, más fácil de cambiar, etc. Es algo bueno.
  • Debido a que puede comprender más fácilmente cómo funciona su programa, las aplicaciones de iOS son cosas innegablemente visuales, en lugar de decir que un programa se ejecuta en un servidor, o tal vez incluso en un servidor. Interface Builder funciona de manera natural al hacer que la visualización sea obvia. ¿Quieres saber qué sucede cuando tocas ese botón? Todo lo que tienes que hacer es mirar hacia dónde va la línea Segue y eso te dice el 90% de lo que necesitas saber. Más importante aún, si * alguien más * necesita entender cómo funciona su programa, probablemente también será más fácil para ellos.
  • Múltiples diseños, misma aplicación: con el creador de interfaces puede crear múltiples guiones gráficos. Entonces, por ejemplo, puede tener uno para iPad y uno para iPhones con pantallas más grandes (6, 6+) y uno para iPhones con pantallas más pequeñas. Puede intercambiarlos indistintamente mientras usa la misma lógica de cómo funciona su aplicación. Entonces, por ejemplo, supongamos que tiene una funcionalidad en su aplicación que solo tiene sentido en la pantalla más grande del iPad. Simplemente verifique qué dispositivo está utilizando el usuario antes de que se cargue esa vista y solo cárguelo si está en un iPad. Esto hace que su aplicación sea mucho más fácil de mantener.
  • Sin reinventar la rueda: todo lo que haces en Interface Builder es realmente solo un código que Apple escribió previamente. Eso significa que es un código que no tiene que escribir, pero lo más importante, es un código que no tiene que * probar *. A menos que haya un error o estés haciendo algo mal, solo sabes que va a funcionar. Por lo tanto, puede dedicar su tiempo a perfeccionar la funcionalidad de su aplicación en lugar de hacer manualmente cosas que esencialmente se han automatizado.

Bien, entonces ¿por qué hacer las cosas mediante programación?

  • Porque puedes escribir más código: sé que el primer punto que escribí dice que IB es bueno porque puedes escribir menos código, y aquí estoy diciendo lo contrario. Bueno, la cuestión es que Interface Builder es una especie de forma manual de programar. Dado que todo el código está preescrito, en realidad nunca obtienes una idea de cómo funciona iOS. En mi opinión, solo puede obtener eso escribiendo el código y usando Interface Builder. Una vez que pude conectar en mi mente cómo hacer algo en ambos sentidos, fue como si se hubiera apagado una luz, y de repente entendí mucho más sobre cómo funciona iOS. Un ejemplo de esto para mí fue en UIButtons. En IB, simplemente dibuje el botón en la pantalla, arrastre una conexión desde su IBAction y listo. No hay un concepto del objetivo del botón, o su selector. Hay un pequeño concepto de su estado (es decir, Seleccionado, Destacado, etc.). Después de configurar algunos botones mediante programación, tuve una mejor idea de esas cosas. Aunque podría ser yo.
  • Porque obtienes más control: a veces necesitas más control sobre los elementos de tu programa del que te proporciona Interface Builder. Por ejemplo, es posible que desee crear una subclase de un elemento visual que haga algo que el preexistente no hace. Esto es muy común con UITableViewCells y UICollectionViewCells. También es muy común crear UISegues personalizados.
  • Debido a que podría ser más eficiente: por ejemplo, usando solo Interface Builder, es posible que deba configurar una vista para cada función de su aplicación, pero si crea esas vistas mediante programación, o incluso solo las instancia en su código, puede simplemente cambiar la funcionalidad a medida que el usuario toca los botones. Ahora puede usar una sola vista para hacer muchas cosas. Esto puede o no hacer que su programa sea más fácil de entender. Si su funcionalidad es lo suficientemente compleja, es posible que desee utilizar varias vistas …
  • Porque es más fácil de depurar: las cosas salen mal cuando estás programando. A veces obtiene resultados inesperados y no sabe por qué, por lo que establece puntos de interrupción en el código y lo recorre para inspeccionar el contenido de las variables. Por ejemplo, al hacer esto, es posible que vea que una matriz que espera que contenga algo nunca se inicializó y, por lo tanto, es nula. Realmente no es posible en Interface Builder.
  • Debido a que hay algunas cosas que Interface Builder simplemente no puede hacer: un ejemplo que me viene a la mente es trabajar con CALayer de la vista. Esto es algo que haría, por ejemplo, para que una vista tenga esquinas redondeadas y un borde negro. Resulta que hay un concepto llamado Variables de tiempo de ejecución definidas por el usuario en Interface Builder, y puede usarlos para establecer el CornerRadius de la capa y el ancho del borde, pero por alguna razón no puede establecer el color en negro . Este es solo un ejemplo de algo que no puedes hacer, estoy seguro de que hay muchos más.

Espero que esto ayude.

Apple ofrece dos formas de diseñar el diseño de una aplicación.

Visualmente (Generador de interfaz)

Esto se puede lograr mediante el uso de tableros de herramientas que le permiten mapear toda su aplicación con casi ningún código.

Se le presenta un tablero ( 600 por 600 ) con el que puede arrastrar y soltar elementos como botones, etiquetas de texto, etc. Lo bueno es que todo lo que coloque en este tablero se representará en la misma ubicación * cuando se ejecute en un dispositivo real. Pero espere, Apple no tiene un dispositivo de 600 por 600 , entonces, ¿cómo puede renderizar, digamos un botón colocado en 500 por 125 correctamente en todos los dispositivos?

Bueno, lo bueno es que puedes cambiar el tamaño de la placa 600 por 600 para que sea del tamaño de cualquiera de los dispositivos Apple existentes actualmente. Pero tenga en cuenta que todos sus elementos se representarán correctamente en ese dispositivo en particular, pero se compensarán por completo en otros dispositivos.

Ahora eres inteligente y quieres que tu aplicación funcione con casi todos los dispositivos de Apple, ¿verdad? Bueno, ahí es donde entran las restricciones . Una vez que haya terminado de colocar elementos en este tablero, comenzará a asignar reglas que le indican al compilador exactamente cómo desea que se visualice su vista en diferentes dispositivos. Las restricciones también se pueden establecer visualmente a través de guiones gráficos o también mediante programación.

Programáticamente

Bueno, esto debería explicarse por sí mismo.

* No se garantiza la visibilidad.

Esto podría ser de gran ayuda y, por supuesto, puedes buscar en Google.

¡Salud!

More Interesting

Cómo hacerse millonario desarrollando aplicaciones de Android e iOS

¿Cuál es la mejor manera de crear una aplicación interactiva de libros para niños para iOS?

¿Hay alguna aplicación de papelera de reciclaje para iPhone?

¿Cuánto costará contratar a un desarrollador de aplicaciones para convertir una idea de juego en realidad (tanto para iOS como para Android)?

¿Necesito un iPhone para desarrollar aplicaciones iOS?

Al hacer la transición del diseño web (frontend) al diseño iOS (UI), ¿qué se requiere (Swift)?

¿Cuáles fueron algunas de las características que se rumorea que se incluirán en iOS 6 antes de la introducción de iOS 6?

¿Cuáles son los pasos necesarios para desarrollar una aplicación iOS?

¿Existe un equivalente de Twitter Bootstrap para diseñar aplicaciones nativas de iOS?

¿Cuáles son los mejores flujos de trabajo para el desarrollo de iOS?

Con el reconocimiento de voz de voz a texto de iOS, ¿puedo retroceder, eliminar o corregir lo que he escrito hasta ahora?

¿En qué debería centrarme más: Ruby on Rails, Objective-C o JavaScript?

Apple promueve que Swift es mucho más fácil que Objective-C, pero como desarrollador experimentado de Objective-C, descubrí que Swift es mucho más difícil de aprender debido a sus características más ricas y su estilo de programación orientado al protocolo. ¿Es verdad?

¿Cuál es la mejor manera de comenzar a usar Xcode?

¿Qué posibilidades hay de que MacRuby se incorpore gradualmente para reemplazar Objective-C como el lenguaje de programación predeterminado para Mac e iOS?