La altura intrínseca/decidida por el sistema de la etiqueta multilínea es incorrecta en el primer diseño

Tengo una UILabel de varias líneas que está dentro de una UIView donde se establece la altura de UIView debido a una función de altura personalizada. Esta función de altura personalizada se basa en la altura de la etiqueta, ya que si hay más líneas, la vista debería ser más alta, además de que se agrega algo de relleno adicional. Esta función de altura (y, por lo tanto, el cambio de tamaño de la vista) se activa repetidamente ya que algo en el fondo puede hacer que cambie el contenido de UIView.

Noté que las primeras veces que se llama a esta función de altura, la altura que se "da" a la UILabel es demasiado. Eventualmente, la altura es correcta y la altura de UIView/UILabel se reduce.

Esto solo sucede si trato de establecer la prioridad de compresión horizontal de un botón que se encuentra junto a esta UILabel; de lo contrario, la altura de la UILabel siempre es correcta. Las prioridades de compresión y abrazo de UILabel son predeterminadas mientras que el botón estaba predeterminado, pero hice +1 en la prioridad de compresión horizontal para que nunca se encogiera por debajo del tamaño intrínseco.

Lo que estoy tratando de lograr: de izquierda a derecha: 8 espacios a través del inicio + UILabel + 8 espacios a través del final + UIButtonOne + >= 16 espacios a través del final + UIButtonTwo + 8 espacios a través del final

Las restricciones de UIButtonOne hacían que se redujera el ancho a 0 porque el ancho de UILabel crecería demasiado horizontalmente cuando tuviera varias líneas.

¿Alguna idea de cómo puedo hacer que la altura de la UILabel sea siempre correcta?

Answer