Si voy a desarrollar una aplicación en Xamarin, ¿necesito diseños para iOS y Android?

La respuesta corta es: probablemente.

Cada sistema operativo tiene una forma patentada de hacer las cosas. Tienen distintos conjuntos de widgets de interfaz de usuario, paradigmas de navegación y patrones de interfaz de usuario e interacción. Esta debería ser su primera consideración de diseño. Debe comprender a sus usuarios y sus preferencias. Algunos usuarios prefieren un sistema operativo sobre el otro porque les gusta uno más que el otro.

En ese caso, los diseños que rompen patrones familiares, o emulan una plataforma en otra, podrían ser antagónicos. Compare y contraste las pautas de interfaz humana de iOS con Material Design para Android.

En lo que respecta a Xamarin, existen básicamente dos enfoques que puede adoptar. El enfoque más “universal” es Xamarin.Forms (XF), mientras que Xamarin.Android y Xamarin.iOS se parecen más al desarrollo de aplicaciones nativas . Cito “universal” porque la medida en que puede escribir IU compartidas para ambas plataformas es limitada.

Xamarin.Forms es una capa de abstracción sobre Xamarin.Android y Xamarin.iOS que generaliza las similitudes entre las plataformas Android e iOS en lo que considero un subconjunto de “mínimo común denominador”.

Por ejemplo, existen controles de entrada de texto tanto para Android ( EditText ) como para iOS ( UITextField ), por lo que XF proporciona un solo control de entrada de texto ( Entry ) que se representa como el control específico de la plataforma cuando se compila para cada plataforma específica.

Sin embargo, hay problemas con este enfoque. Las propiedades disponibles en los controles nativos para una plataforma no necesariamente tienen análogos en otras. Volviendo al ejemplo de entrada de texto, UITextField expone propiedades que controlan el estilo del borde, pero EditText no. En consecuencia, el control de Entry solo tiene propiedades que tienen ambos controles nativos. Por lo tanto, si desea entradas de texto con bordes con estilo, debe implementarlas de manera diferente para cada plataforma

Esto podría tener ramificaciones importantes para sus decisiones de diseño. Puede ser que un diseño único destinado a ambas plataformas requiera mucho trabajo dispar para cada una de ellas para unificar su apariencia.

Por un lado, si su diseño requiere entradas de texto con bordes, deberá crear renderizadores personalizados para XF o un diseño compuesto en Xamarin.Android, (por ejemplo, envolver un control EditText en algo con un borde), en para hacer que la entrada de texto se parezca a lo que parece un UITextField predeterminado en iOS.

Por otro lado, puede diseñar para cada uno, permitiendo que el entorno nativo influya en ciertos elementos de diseño, básicamente intercambiando el esfuerzo del código por el esfuerzo de diseño.

De cualquier manera, es probable que tenga que tomar algunas decisiones específicas de la plataforma y manejar los problemas específicos de la plataforma en algún momento.