¿Cómo abordaría un gran programador de iOS la implementación de un elemento de interfaz de usuario complejo y animado?

No necesita subclasificar un controlador existente a menos que quiera reutilizar parte de su funcionalidad.

La mayoría de las veces subclasificará una UIView directamente, dibujando su control allí, lidiando con las entradas táctiles y animando los cambios.
Obviamente, algunos casos son más difíciles que otros.

Su caso en particular se puede lograr al tener 2 círculos con un color de borde gris que animan su tamaño / escala y fondo de gris a transparente. Las letras M y F son etiquetas o letras dibujadas con texto central.

Todo esto se puede lograr con UIKit solo, usando UIViews con una media altura / ancho de cornerRadius (que es un círculo), con borderColor y borderWidth, y simplemente animando la propiedad backgroundColor.

Usar UIKit para eso es probablemente como matar una mosca con un camión, pero de todos modos funciona. Si desea usar algo más ligero, puede dibujar las formas con Core Graphics (busque dibujar círculos con Core Graphics en google) y el texto con Core Text. Usando Core Animation, para las animaciones.

La parte difícil será ese enlace en el centro que, hasta donde yo entiendo, la animación prevista es bastante difícil de lograr. Puede crear eso con un CAShapeLayer que tenga una propiedad de ruta animable.

Algunas referencias útiles:
¿Formas animadas de QuartzCore?
Tutorial de gráficos básicos: líneas, rectángulos y degradados
Tutorial de Core Text para iOS: Hacer una aplicación de revista – Ray Wenderlich
Animaciones explicadas

Tu magia está esperando aquí:
PaintCode
genera el código que puede usar en sus métodos de dibujo de control personalizado y puede hacerlos tan flexibles como desee, sin involucrar mapas de bits, basados ​​en vectores.

Descargo de responsabilidad: no estoy relacionado con ese producto / empresa de ninguna manera, excepto amor puro 🙂

Creo un montón de mis propios objetos de interfaz de usuario, a menudo con animaciones. Casi siempre son UIViews con los gráficos / animaciones creados con CALayers (y subclases).

En su ejemplo, tendría una UIView como contenedor. La palabra género estaría en un UILabel. El resto se haría en capas (en subcapas de la capa de la vista del contenedor).

Use un CAShapeLayer para el círculo oscuro y un CATextLayer para la letra M. Cree otro CAShapeLayer para el círculo alrededor de F. Y un CATextLayer para la F. También crearía otro CAShapeLayer para la pieza de conexión entre la M y la F.

Cuando el usuario toca la opción, (tendrá que usar los métodos táctiles de UIView para hacer la detección de golpes) use CABasicAnimations para cambiar la ruta y el color de cada uno de los elementos. Debido a que los caminos son animables, CoreAnimation probablemente hará un trabajo decente interpolando entre sus formas.

Recomendaría un UIImageView. Puede crear sus gráficos del tamaño y la forma que desee, incluidas las animaciones.

Necesita crear un gráfico del estado Masculino, del estado Femenino y (imagino) tres o cinco pasos a medida que burbujean entre sí.

Usted crea el ImageView, lee sus datos y establece el gráfico M o F en consecuencia.

Agregue un gesto de toque al UIImageView.

Cuando se toca, establece los nuevos datos y carga las imágenes de M-> F o F-> M en el orden correcto, con un recuento repetido de 1.

Referencia de clase UIImageView

Creo que puede hacer esto con UIButton’s y dado que cada uno de estos botones son UIViews, puede realizar la animación adecuada que desee en estos. Los controles segmentados son estrictos y hay poco espacio para la personalización. Tu problema no parece demasiado difícil. ¡Buena suerte!