¿Tengo que usar UIKit para hacer una aplicación de iOS?

Si lo desea, puede ignorar principalmente UIKit. Puede configurar un contexto openGL y renderizarlo directamente usando primitivas openGL. Ahora tiene control total sobre el renderizado sin ninguna restricción. Si no ha trabajado con openGL antes, espere pasar unas semanas tratando de entenderlo. Entonces, probablemente necesitará pasar unas semanas o meses más creando una capa de abstracción para crear su propia versión personal muy limitada de UIKit.

Pero muy pocas aplicaciones necesitan este nivel de control y es una cantidad de trabajo absolutamente enorme. Luego, además de eso, tendrás una aplicación que no parece una aplicación para iOS. También espero que sea un proyecto personal porque será una pesadilla de mantenimiento para cualquier otra persona. Así que siempre descarte cualquier otra opción disponible antes de hacer algo como esto.

Alternativamente, podría pasar algún tiempo aprendiendo cómo hacer que UIKit haga lo que quiere. En realidad, es muy bueno para permitir que las cosas se personalicen y, si eso no es suficiente, hay varios hacks que puedes hacer para ir un paso más allá (aunque sugiero evitarlos). También puede obtener acceso a CGContext desde UIKit para hacer un renderizado personalizado, aunque esto generalmente no es necesario, ya que basta con especificar una imagen para el botón.

O podría compilar toda la aplicación en HTML y CSS. Aunque personalmente siento que esto es más restrictivo que UIKit.

Si bien puedes dibujar tus propios botones y crear una interfaz de usuario personalizada con OpenGL / Metal o lo que quieras …

… Probablemente no haya descubierto que el kit de interfaz de usuario permite cantidades infinitas y masivas de control y personalización.

Puede usar fácilmente cualquier mapa de bits para cualquier elemento. Incluyendo mapas de bits en rodajas que proporcionan una escala básica.

O puede tener un código personalizado que represente los elementos dinámicamente. Por lo tanto, es muy fácil escribir elementos que escalen, sean cálidos y animados.

Si puede visualizar una interfaz, puede compilarla en UI Kit. Podría decirse que es el mejor marco de interfaz de usuario del mundo.

La personalización más simple es usar su propio mapa de bits para botones y paneles.

Una solución más poderosa es subclasificar el elemento y anular drawRect.

Con el mayor de los respetos, si crees que UIKit es restrictivo, debes investigar más.

Sí, los botones personalizados no son ningún problema, subclase UIButton, ¡y ve a la ciudad!

Si es posible

Puede proporcionar un área táctil en lugar de UIButton . Esto es totalmente programático. Aprenda sobre el área táctil en iOS. Creo que esta es otra solución de tu pregunta.

No, debes usar uikit en tu aplicación