Esta es la respuesta más acertada que encomtrarás dar, pero estúdiala pausadamente y valora si es compatible a tu trabajo.
Solución:
translatesAutoresizingMaskIntoConstraints
debe configurarse para false cuando:
- Creas un
UIView
-objeto basado en código (Storyboard/NIB lo establecerá por usted si el archivo tiene habilitado el diseño automático), - Y desea utilizar el diseño automático para esta vista en lugar del diseño basado en marcos,
- Y la vista se agregará a una jerarquía de vistas que es utilizando el diseño automático.
En este caso no todos son true. En concreto, el punto 2.
Después de devolver la vista de encabezado de viewForHeaderInSection
se añade a la vista de tabla y su frame
se establece en función del ancho actual de la vista de la tabla y la altura desde la que regresa heightForHeaderInSection
.
Puede agregar subvistas a la vista del encabezado raíz (header
en su código) y use restricciones para diseñar esas subvistas en relación con la vista del encabezado.
Ha descubierto la razón por la que no puede usar el diseño automático para la vista del encabezado en sus comentarios; en el momento de crear la vista, aún no forma parte de la jerarquía de vistas, por lo que no puede restringir sus bordes a nada.
Para tener un tamaño de encabezado dinámico, deberá agregar subvistas a su header
ver y agregar restricciones entre esas subvistas y header
. Luego, el diseño automático puede usar el tamaño de contenido intrínseco de header
para determinar el tamaño de la vista del encabezado.
Dado que no está restringiendo el marco de header
no ajustar translatesAutoresizingMaskIntoConstraints
a false
. Deberá asegurarse de tener suficientes restricciones en sus subvistas para el diseño automático para determinar el tamaño de header
.
Necesitará una línea continua de restricciones de arriba a abajo y posiblemente algunas restricciones de altura para sus subvistas si el tamaño del contenido intrínseco de esa subvista no es suficiente.
Cualquier subvista que agregue header
hacer necesitar translatesAutoresizingMaskIntoConstraints
ajustado a false
también tienes que volver alguna cosa de estimatedHeightForHeaderInSection
– cuanto más se acerque a la altura real del encabezado, mejor – si está utilizando tableview.sectionHeaderHeight = UITableViewAutomaticDimension
-
Para la vista creada mediante programación, el valor predeterminado es true y para las vistas de Interface Builder, el valor predeterminado es false
Si la propiedad es (o se establece en) True, el sistema crea automáticamente un conjunto de restricciones basadas en el marco de la vista y su máscara de tamaño automático. Y si agrega sus propias limitaciones, inevitablemente conflicto con las restricciones autogeneradas. Esto crea un diseño insatisfactorio. Por lo tanto, al crear instancias de vistas mediante programación, asegúrese de establecer su traduceAutoresizingMaskIntoConstraints propiedad a NO.
Te mostramos reseñas y valoraciones
Si aceptas, tienes la libertad de dejar un enunciado acerca de qué le añadirías a este ensayo.