¿Es mejor usar guiones gráficos o hacer todo mediante programación con Swift 3 y Xcode 8?

Use guiones gráficos o XIB, no escriba todo el código de su interfaz de usuario mediante programación.

Algunas ventajas para usar XIB:

  1. Los XIB le brindan una mayor flexibilidad sobre las transiciones entre los controladores de vista que los Storyboards, y un XIB no se hincha tanto como un Storyboard porque solo contiene una vista.
  2. Interface Builder tiene configuraciones para muchas propiedades básicas de la interfaz de usuario (por ejemplo, texto de etiqueta, color). Cualquier configuración que no tenga puede establecerla con el código. El uso de Interface Builder es más eficiente de esta manera, porque pasa menos tiempo escribiendo código de interfaz de usuario mundano.
  3. XIB y Storyboards le permiten delinear visualmente y configurar su IU. Descubrirá que a medida que trabaja con diseñadores gráficos exigentes, ayuda a ver visualmente lo que está construyendo. Un codificador que ciegamente pone valores RGB para un color que tomó de Photoshop es estúpido: desea ver que los colores coinciden. Lo mismo ocurre con la creación de prototipos de una interfaz de usuario: es simplemente más fácil ver su interfaz de usuario en Interface Builder.

Algunos inconvenientes para codificar mediante programación todas las interfaces de usuario:

  1. Es mucho más trabajo codificar todas sus interfaces de usuario mediante programación. Un verdadero codificador perezoso, algo bueno, utiliza herramientas para hacer su trabajo más fácil, más productivo y más eficiente. Si desea personalizar su interfaz de usuario de tal manera que Interface Builder no puede hacerlo, acceda con un código personalizado. Codificar todas sus interfaces programáticamente diciendo que permitirá una mayor flexibilidad es estúpido: puede ahorrar tiempo con XIB y personalizarlas con código en cualquier momento que lo desee.
  2. El diseño automático ya es un trabajo difícil y sin un editor visual que solo empeora. En Interface Builder puede ver exactamente las restricciones y sus efectos, de nuevo un “ayudante” visual. Tampoco tiene que ejecutar su código para ver los cambios de restricciones, como lo haría cuando configura las restricciones manualmente. Ah, y no me digas que estás configurando las coordenadas x / y UI a mano …
  3. Es difícil escribir el código de la interfaz de usuario con elegancia. Necesita una línea para cada nueva propiedad que está configurando, termina con más de 15 propiedades perezosas en la parte superior de su clase antes de llegar al código “real”, y necesita una gran cantidad de código indirecto para responder a la interfaz cambios Lo peor de todo es que el código realmente no “hace” nada, solo pone un color en una etiqueta. Con todo ese código, será más difícil ver el código que realmente importa para la ejecución de su aplicación.

En general, creo que hay una consecuencia real por no usar las tecnologías proporcionadas por Apple. ¿Qué sucede si nunca aprendió a usar el diseño automático? ¿O qué de ustedes nunca aprendió a usar XIB? ¿O qué pasa si nunca aprendiste a cambiar un UILabel con código?

Como programador, querrás descubrir continuamente nuevas formas de hacer cosas, porque tu trabajo literalmente depende de ello. Elegir una forma sobre la otra simplemente porque alguien te dijo que es lo correcto es estúpido. Desea probar ambos, conocer ambos y luego elegir el mejor para la tarea en cuestión. No para cada tarea, solo para la tarea en cuestión.

Quizás lo peor de hacer todo programáticamente es que podría terminar creando un marco para facilitar su trabajo. Comienza a nombrar sus campos de texto de una manera específica, y crea una clase de fábrica para ayudarlo a producir campos de texto con las configuraciones correctas, y luego puede cambiar todas las configuraciones de campos de texto con solo una línea de código.

Hasta que te des cuenta … ¡has recreado XIBs / Storyboards y los proxies de apariencia sin conocerlos!

He usado mucho Storyboard desde que comencé el desarrollo de iOS y realmente nunca hice UI Programmatic hasta hace unos dos meses. La razón por la que no lo he hecho programáticamente desde los últimos meses fue porque casi todos los libros y cursos de iOS que hice han usado storyboard.

Estos últimos dos meses he estado haciendo solo programáticamente y aquí están mis hallazgos al hacerlo.

PROS:

1. Limpieza y código reutilizable

– ¡Mira lo limpio que se ve! Básicamente, lo que estás viendo son cierres y cada cierre representa un elemento de la interfaz de usuario que aparece en la pantalla. Me encanta esto porque hace que la creación de una interfaz de usuario rápida sea muy eficiente. En aproximadamente 10 minutos puedo tener una interfaz de usuario de aspecto decente y también ver cómo funciona desde el código. También me gusta cómo no siempre tengo que arrastrar IBOutlet e IBActions en la pantalla y luego editar la interfaz de usuario en una clase Swift o en ViewDidLoad, simplemente lo hace muy desordenado

2. Crear diseños complejos con anclajes

– En el pasado, cuando usaba solo el guión gráfico, odiaba cómo a veces crear diseños complejos y usar el menú de pin era un poco difícil (tal vez solo soy yo, pero lo que sea). Me encanta lo fácil que es configurar anclajes en un elemento de interfaz de usuario rápido. Básicamente, en la imagen de arriba, agrega la vista al ViewController y luego la ancla a otros elementos en la pantalla y en aproximadamente un minuto tiene una matriz de trabajo en todos los dispositivos. * .anchor es una extensión personalizada * pero demuestra cuán poderosa es la codificación de la interfaz de usuario.

Contras:

1. Incapaz de visualizar fácilmente los elementos

– Tengo que adivinar cómo se vería en la pantalla o tener mi diseño abierto en la otra pantalla para ver el espaciado.

Eso es todo, solo una estafa, pero después de no usar el guión gráfico para escribir una aplicación, nunca más volveré a tocar un .storyboard.

No parece haber un claro ganador entre guiones gráficos o implementaciones programáticas. Depende de la complejidad del proyecto, así como de más beneficios a largo plazo frente a beneficios a corto plazo.

Los guiones gráficos le permiten: arrastrar y soltar rápidamente un objeto en Interface Builder; luego modifica los atributos de dicho objeto en el Panel del Inspector a la derecha. Impresionante a corto plazo, ideal para proyectos más simples.

Los objetos generados mediante programación son más fáciles de modificar en una aplicación a gran escala. ¿Tiene un campo de texto específico del que desea cambiar el color del texto? No hay problema. Simplemente busque en todos sus archivos el nombre de ese campo de texto (si lo nombró bien, será muy fácil), y luego ajuste la propiedad usando el código. Tomando el mismo escenario, si estuviera usando Storyboards, primero tendría que encontrar la página, luego hacer clic en el objeto, luego hacer clic en el atributo y luego modificarlo. Actualizar cosas es un poco más lento y un poco menos manejable.

Para los principiantes, usar Storyboard definitivamente sería mejor ya que las cosas no son tan complejas al principio, por lo que no ahorrará tanto tiempo al escribir todo programáticamente.

Habiendo usado Storyboards por un tiempo, puedo decir que ambos son útiles.

Si te vuelves bueno con Storyboards, entonces deberías poder armar algo más rápido que hacerlo programáticamente. Especialmente cuando se trata de diseño automático.

También es más fácil mejorar los guiones gráficos que hacer la interfaz de usuario mediante programación, porque la interfaz de usuario se vuelve realmente extraña cuando no se configura correctamente. Lo más probable es un problema con la caída fuera del alcance.

Si solo está escribiendo por su cuenta, entonces usar guiones gráficos está bien. Especialmente, usar clases de tamaño y diseño automático es mucho más fácil con guiones gráficos.

Si está trabajando con un equipo grande, usar storyboards es más difícil. Cuando se registra, los cambios en el guión gráfico aparecen como cambios en xml. No es demasiado difícil detectar diferencias, pero es molesto.

En este caso, puede hacer algunas cosas para ayudar. Primero es dividir los guiones gráficos en múltiples guiones gráficos. Esta es una característica nueva en Xcode y vale la pena. Además, no establezco atributos, etc. en el guión gráfico (por ejemplo, color de fondo), pero siempre lo hago en código.

Si decide renunciar a los guiones gráficos, busque en los marcos de diseño automático de código abierto en github. Hacer el diseño automático es difícil en el código.

Prefiero no usar Storyboard en absoluto y construir todo mediante programación.

Recientemente he creado una aplicación sin storyboard y aquí está el artículo que le da una idea de por qué dejé de usar storyboard.

En pocas palabras, tuve un problema con Git Merge, conflicto de salida y problema de restricción de diseño automático cuando tengo algunas vistas anidadas profundas de nivel.

Deje de usar Storyboard, comience a construir la interfaz de usuario 100% mediante programación

Bueno … tengo que decirlo, pero depende …

Si está utilizando Git y es el único desarrollador (o el único que editará el guión gráfico), el guión gráfico es la mejor opción para la mayoría de las aplicaciones. Pero si eres un equipo que trabaja con el guión gráfico, la mierda se cae.

Un amigo y yo intentamos trabajar juntos en un proyecto usando el guión gráfico. Casi cada confirmación resultó en un error de fusión. Esto se debe a que solo un ligero cambio en el guión gráfico cambia mucho código XML (Xcode guarda el guión gráfico usando XML). Intentar corregir estos errores de fusión también es un poco difícil, ya que probablemente no sepas cuál de las versiones es la correcta (es bastante difícil de leer).

Hacer cosas programáticamente también puede ser más difícil porque no puedes “verlo” directamente. Por ejemplo restricciones.

Pero si tuviera que elegir aprender el éter de ellos al 100%, elegiría programáticamente directamente. Principalmente porque los errores de fusión Git. Pero también parece que tienes más control de la apariencia. Y creo que es más fácil cuando se hacen vistas más avanzadas.

¡Buena suerte!

Recientemente me he preguntado esto también y depende del proyecto. Si es solo y recién está comenzando como desarrollador, es mejor usar el guión gráfico porque es intuitivo (tanto las pantallas como los flujos). Si está trabajando en un equipo, podría ser mejor usar archivos xib (pantallas individuales) o hacer cosas programáticamente para reducir la cantidad de conflictos al fusionar el trabajo. Esto es de mi propia experiencia y leyendo respuestas a preguntas similares en línea.

No hago aplicaciones muy complicadas, así que no lo sé realmente.

Pero creo que los guiones gráficos pueden llevarte un largo camino hacia tu objetivo, y seguro que me gustan.
Particularmente ahora, cuando las clases de tamaño y las otras herramientas hacen que sea mucho más fácil hacer que el dispositivo de las aplicaciones sea independiente.