¿Qué es una restricción 'UIView-Encapsulated-Layout-Width'?

Sigo obteniendo 'No se puede satisfacer simultáneamente las excepciones de las restricciones (Xcode 5, iOS 7, tanto en el dispositivo como en el simulador), donde una de las restricciones en la list es algo como esto:

"<NSLayoutConstraint:0x165b23d0 'UIView-Encapsulated-Layout-Width' H:[StoryPlayerCell:0x165affc0(0)]>" 

Yo no establecí esta restricción yo mismo. Tampoco es una NSAutoresizingMaskLayoutConstraint . ¿Pero de dónde viene? ¿Y cómo puedo deshacerme de él?

No tengo idea. Y no puedo encontrar nada sobre 'UIView-Encapsulated-Layout-Width' en la documentation de Apple. Incluso la búsqueda en Google no devuelve nada.

¿Alguna sugerencia?

PS: Estoy usando esta celda en un UICollectionView con una subclass personalizada de UICollectionViewFlowLayout . ¿Tal vez la parte 'Encapsulated-Layout' tiene algo que ver con esto?

Una solución rápida y agradable es asignar un valor de prioridad 999 a las restricciones personalizadas con alta prioridad. Las restricciones encapsuladas y generadas automáticamente deben dominar con mayor prioridad que sus restricciones.

https://stackoverflow.com/a/25795758/590010

Jugué con la muestra, creo que estos códigos están causando la exception de Autolayout.

CGFloat height = MAX(0, -y + maxY); línea 79 en CSStickyHeaderFlowLayout.m.

si usa un valor estático para la altura como 200, la exception ya no sucederá. No puedo entender qué es exactamente UIView-Encapsulated-Layout, pero parece que cambiar de forma dinámica el cuadro UICollectionViewLayoutAttributes puede causar ese problema. en el proyecto de muestra, es la altura, en el problema de PO, supongo que es el ancho. Tal vez pueda profundizar un poco más si crees que sería útil.

Puedo arrojar algo de luz sobre la respuesta a la pregunta. En mi aplicación OS X, encontré una restricción tan misteriosa en la vista de celda de un NSTableView, (es decir, un object que había devuelto anteriormente en el método NSTableViewDelegate -tableView: viewForTableColumn: fila). También había enviado un post setWidth: 0.0 a esta misma columna de la tabla. Cambiar el parámetro en ese setWidth: de 0.0 a algo más se reflejó en el valor constante de la misteriosa restricción.

Conclusión: Las restricciones que se registran a sí mismas con 'UIView-Encapsulated-Layout-Width' o 'NSView-Encapsulated-Layout-Width' se producen al establecer el ancho de una columna de tabla, o algo similar.

Encontré esto con comstackciones de iOS 10 donde estaba usando subclasss UITableViewCell como vistas normales, no como filas de tabla. La celda estaba restringiendo su contenido a ancho cero.

La solución alternativa que utilicé fue simplemente agregar el contenido de la vista a la jerarquía de la vista en lugar de la celda de la tabla. También me aseguré de conservar la celda tableView (ya que la jerarquía de la vista ya no la retenía).