Tengo un UITableView ejecuta en iOS 8 y estoy usando automático de células alturas de las restricciones en un storyboard.

Una de mis células que contiene una sola UITextView y la necesito para contraer y expandir según la entrada del usuario – pulse reducir/ampliar el texto.

Voy a hacer esto mediante la adición de un tiempo de ejecución de la restricción a la vista de texto y cambiar la constante en la restricción en respuesta a eventos del usuario:

-(void)collapse:(BOOL)collapse; {

    _collapsed = collapse;

    if(collapse)
            [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; //70.0
        else
            [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]];

    [self setNeedsUpdateConstraints];

}

Whenver hago esto, me envuelve en tableView actualizaciones y llame a [tableView setNeedsUpdateConstraints]:

[tableView beginUpdates];

[_briefCell collapse:!_showFullBriefText];

[tableView setNeedsUpdateConstraints];
//I have also tried 
//[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
//with exactly the same results.

[tableView endUpdates];

Cuando hago esto, mi celular no se expanda y se anima mientras lo hacemos) pero me da un limitaciones advertencia:

2014-07-31 13:29:51.792 OneFlatEarth[5505:730175] Unable to simultaneously satisfy constraints.

Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 

(

    "<NSLayoutConstraint:0x7f94dced2b60 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...'(388)]>",

    "<NSLayoutConstraint:0x7f94dced2260 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...']-(15)-|   (Names: '|':UITableViewCellContentView:0x7f94de5773a0 )>",

    "<NSLayoutConstraint:0x7f94dced2350 V:|-(6)-[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...']   (Names: '|':UITableViewCellContentView:0x7f94de5773a0 )>",

    "<NSLayoutConstraint:0x7f94dced6480 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f94de5773a0(91)]>"



 )

Will attempt to recover by breaking constraint 

<NSLayoutConstraint:0x7f94dced2b60 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...'(388)]>

388 es mi calcula la altura, las otras restricciones en el UITextView son la mina de Xcode/IB.

La última es la que me molesta – me imagino que UIView-Encapsulated-Layout-Height se calcula la altura de la celda cuando se representa por primera vez – (me puse mi UITextView de la altura del >= 70.0) sin embargo no me parece justo que este derivado de la restricción, a continuación, se sobrepone a un usuario actualizada cnstraint.

Peor, aunque la estructura del código dice que está tratando de romper mi altura restricción, no – se va a calcular la altura de la celda y todo lo que se dibuja como me gustaría.

Entonces, ¿qué es NSLayoutConstraint UIView-Encapsulated-Layout-Height (supongo que es el calculo de la altura automático de células de tamaño) y ¿cómo debería forzar a que se vuelva a calcular de forma limpia?

  • cruz enviado a Apple dev foros: devforums.apple.com/thread/238803
  • He oído un rumor de que el auto de diseño todavía está cambiando. Tal vez esto es un error.
  • Para todas aquellas personas desarraigo, gracias. También sugiero ir a la Apple error y «yo también»ing para intentar llamar la atención de una Manzana dev.
  • Mi informe de defecto de Apple ha sido marcado como un duplicado de la que creo que significa que es un defecto.
  • Ortwin la sugerencia de bajar la prioridad de las obras en que se detiene la advertencia pero no tiene el efecto deseado en la celda. Creo que esto es una Manzana error y animar a otros a crear un rdar para ello.
  • Me ha resuelto un problema similar en la siguiente forma y funciona en iOS 7/8. 1) Baje uno de la restricción de las prioridades de 750. Me gustaría tratar el 1º o el 2º 2) En la celda de la subclase en awakeFromNib conjunto self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;. Creo que inicialmente la configuración de la autoresize máscara deja la última restricción se añadió. He encontrado esta solución aquí: github.com/wordpress-mobile/WordPress-iOS/commit/…
  • La reducción de la prioridad de uno de mis limitaciones, simplemente permite que la Manzana de la restricción de la gana, que no es lo que quiero – ver @Ortwin la respuesta a continuación. Cuando se establece la autoresizingMask conjunto, ¿usted también tiene translatesAutoresizingMaskIntoConstraints conjunto? De cualquier manera, esto suena como la mezcla de dos sistemas, o de una Manzana error en el diseño Automático.
  • alguna novedad? Me encontré con el mismo problema, mientras que jugando con la disposición Automática en el Interface Builder. Algunas células de la causa de este problema, algunos no.
  • Nada……..
  • Vino a través de este problema mí hoy. He encontrado que, además de la configuración: self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight; también tengo que añadir self.frame = CGRectMake(0, 0, self.frame.size.width, 50); después de y, a continuación, el problema desapareció. He publicado una respuesta a una pregunta similar aquí: stackoverflow.com/questions/25087969/…
  • No creo que la adición de un autoresizing marca es una buena solución.
  • se que la generación de este celular en IB antes de realizar estos cambios en el diseño? He estado depurando el mismo problema, pero yo no estaba de añadir ningún extra restricciones. Me las arreglé para suprimir la advertencia de que la reconstrucción de mi punto de vista a partir de cero, y cuando me diff ed el guión gráfico 2 archivos la única diferencia es que la versión con las advertencias de que faltaba la línea <rect key="frame" x="0.0" y="0.0" width="600" height="110"/> en su definición, que me lleva a creer que este es un IB error. Al menos el mío era de todos modos.
  • Yo soy. Voy a investigar esto, gracias.

InformationsquelleAutor Rog | 2014-07-31

13 Comentarios

  1. 282

    Tratar de disminuir la prioridad de su _collapsedtextHeightConstraint a 999. De esa manera el sistema se suministra UIView-Encapsulated-Layout-Height restricción siempre tiene prioridad.

    Está basado en lo que usted regrese en -tableView:heightForRowAtIndexPath:. Asegúrese de devolver el valor de derecho y de su propia limitación y el generado debe ser el mismo. La prioridad más baja para su propia restricción sólo es necesario temporalmente para evitar conflictos a la vez que reducir/ampliar animaciones en vuelo.

    • A fin de lograr exactamente lo contrario de lo que quiero. El UIView-Encapsulado-Layout-Altura está mal, pertenece a la distribución anterior.
    • El UIView-Encapsulated-Layout-Height restricción añadida por UITableView una vez que las alturas son determinado. Puedo calcular la altura sobre la base de la systemLayoutSizeFittingSize de la contentView. Aquí, el UIView-Encapsulated-Layout-Height no importa. A continuación, el formato tableview establece el contentSize explícitamente el valor devuelto por heightForRowAtIndexPath:. En este caso es la correcta para reducir nuestra costumbre restricciones’ prioridad debido a que el formato tableview restricción debe tomar precedencia después de la rowHeights se calculan.
    • Después de probar diferentes maneras de arreglar esto, la asignación de 999 a los conflictos de personalizado restricciones truco. Gracias @OrtwinGentz!
    • heightForRowAtIndexPath es olde muy antiguo ¿no? No se debe aplicar cuando se tiene el diseño automático y auto de tamaño de las células.
    • tuvimos que soporta iOS 7.
    • Todavía no consigue el punto de es correcto para reducir nuestra costumbre restricciones’ prioridad debido a que el formato tableview restricción debe tomar precedencia después de la rowHeights se calculan. La cosa es que UIView-Encapsulated-Layout-Height está mal si no me baja la prioridad…
    • Esto no funciona para mí… sólo permite a iOS romper la restricción, por lo que mis células son más cortas que las necesito para ser. ¿Cómo puedo obtener iOS para volver a calcular la altura de la celda en su lugar?
    • Cuando se cambia el tamaño de la celda tiene que decirle al formato tableview: [tableView beginUpdates]; [tableView endUpdates];, a Continuación, el formato tableview pedirá al delegado a través de -heightForRowAtIndexPath: para las nuevas alturas.
    • Yo no soy muy de cambiar el alto de celda, estoy tratando de reutilizar una célula existente de dequeueReusableCellWithIdentifier. De modo que la altura de la celda está cambiando dentro de mi en formato tableview del cellForRowAtIndexPath función. Me gustaría deshacerse de este UIView-Encapsulated-Layout-Height restricción porque no parece ser necesario, ya que el resto de mis límites impuestos conducirá a la misma altura. Es sólo que me impide actualizar un reutilizables de la célula de altura.
    • No se lucha contra el marco. UIView-Encapsulated-Layout-Height se agrega automáticamente por UITableView. Desde esta restricción siempre tiene una prioridad de 1000 vertical restricciones deben tener una prioridad menor para evitar un conflicto.
    • Yo sostengo que es evitar el conflicto no arreglar el problema real – a pesar de que como este todavía se siente como una Manzana error, creo que es probablemente la cosa correcta de hacer. Especialmente a la luz del hecho de que Apple recalcular esta restricción y todo lo que hace poner correctamente después de que el error se imprime.
    • -1 para esta respuesta, ya que supone la restricción que se agrega es la correcta. El agregado UIView-Encapsulated-Layout-Width en mi caso está mal, pero parece ser el preferido por encima de mi explícitas las limitaciones en tiempo de ejecución.
    • Ver mi respuesta actualizada. No se lucha contra el marco y simplemente aceptar que la restricción del sistema tiene prioridad. Si usted piensa que la restricción del sistema es malo, asegúrese de devolver la correcta rowHeight del delegado.
    • te amo!!!!!
    • Creo que lo que está sucediendo es que el sistema utiliza autoresizing máscara de restricciones para un celular de vista del contenido. Así que si usted específicamente auto.translatesAutoresizingMaskIntoConstraints = NO, que interfieren con el sistema de diseño. A continuación, asegúrese de que cualquier restricción de los cambios se realizan dentro de comenzar y terminar las actualizaciones, y que al menos una restricción es de 999 como se recomienda para cada eje.
    • Hola @OrtwinGentz, gracias por la AAA de la punta. Tuve una situación en la que yo estaba usando nativo seleccione las filas y, a continuación, en la celda utilizando setSelected (NO se como es más habitual en el controlador de vista) yo era expandir o contraer un UILabel por un par de líneas. En ese caso la situación es exactamente como lo describen, por lo que puedo ver. No puedo agradecerles lo suficiente. RogerNolan sospecho que la sutil diferencia de que traer a la palestra (y quiero que se explica, también), depende de la situación. Nota a todos los lectores debe utilizar ESTE INCREÍBLE TIP para resolver estos problemas.
    • un truco tan bueno que me envió una recompensa, @OrtwinGentz !
    • Gracias @JoeBlow y me alegro de que les sea útil!
    • esta respuesta no es una solución para el problema, sino una solución sucia. Usted no debe ajustar las prioridades de sus limitaciones sólo porque no es algo creado. Apple docs decir que sólo prio 1000 es necesario, cuando se pone un número inferior, a continuación, usted eventualmente pedir un diseño diferente en el sistema. Y el consejo que «no se lucha contra el marco de» es por lo menos extraño. La solución es simple – sólo tiene que proporcionar «estimatedHeightForRowAtIndexPath». En mi caso, lo que es más grande que la altura real trabajado. Más precisamente, el retorno máximo de la altura de tu celda actual del estado.
    • Puedo confirmar que hacer de mi la restricción de la prioridad del ser UILayoutPriorityRequired-1 (999) y llamando a tableView.beginUpdates(); tableView.endUpdates() hace el truco.
    • Aquí es un año más tarde, y Apple no ha aclarado o corregido este grupo de código. Todo desarrollador que intenta hacer un teclado personalizado se ejecuta en este aparentemente simple problema.
    • esto funcionó para mí como por arte de magia. muchas gracias.
    • eres un mago
    • Me estaba poniendo de errores de diseño, mientras que la eliminación de una celda, mi diseño se ve bien y no hay errores en cualquier otro momento. Dejar caer la prioridad a 999 fija.

  2. 62

    Tengo un escenario similar: una vista de tabla con una fila de células, en la que hay un par de líneas de UILabel objetos. Estoy usando iOS 8 y autodiseño.

    Cuando he girado tengo el mal sistema calcula la altura de la fila (43.5 es mucho menor que la altura real). Se parece a:

    "<NSLayoutConstraint:0x7bc2b2c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7bc37f30(43.5)]>"

    No es sólo una advertencia. El diseño de mi vista de tabla de la célula es terrible, todo el texto superpuesto en una línea de texto.

    Me sorprende que la siguiente línea de «parches» a mi problema por arte de magia(autodiseño se queja de nada y me pongo lo que me espera en la pantalla):

    myTableView.estimatedRowHeight = 2.0; // any number but 2.0 is the smallest one that works

    con o sin esta línea:

    myTableView.rowHeight = UITableViewAutomaticDimension; // by itself this line only doesn't help fix my specific problem
    • Por fin! Esta es una respuesta correcta. En la WWDC de la sesión, fue mencionado, si usted va a utilizar el sistema automático de la altura de la fila de tamaño, a continuación, usted deberá establecer un estimatedRowHeight o cosas malas que sucede. (Sí, Apple realmente las cosas desagradables que sucedió)
    • De hecho, simplemente ajuste el estimatedRowHeight propiedad resuelto todos mis problemas y por lo tanto parece obligatorio. Vale la pena señalar que, en vez de sólo la configuración de la propiedad a la 2.0, es mejor estimar la altura de la fila para desplazarse por motivos de rendimiento.
    • con Obj-C la única manera de que se ha solucionado el problema fue reemplazar el método del formato tableview delegado, se agradece un montón! -(CGFloat)en formato tableview:(UITableView *)en formato tableview estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 2.0; }
    • FWIW, la adición de la estimación no ha hecho ninguna diferencia en absoluto para mí.
    • Heh. Estoy de regreso en esta misma respuesta, de nuevo, y se fue a la práctica con la alegría y la esperanza. Una vez más, es que no hizo ninguna diferencia para mí 🙂
    • sí, esa es la única respuesta correcta para UITableViewAutomaticDimension
    • Las estimaciones de la devuelve en formato tableview:estimatedHeightForRowAtIndexPath: DEBE ser al menos tan grande como la de la célula. De lo contrario, el calculo de la altura de la mesa será menor que la altura real, y la tabla puede desplazarse hacia arriba (por ejemplo, después de descansar segue devuelve a la mesa). UITableViewAutomaticDimension no debe ser utilizado.
    • No está seguro de lo que el rendimiento de impacto que esto tiene (ninguna visualmente), pero me encontré con que yo todavía tengo problemas si el tamaño real de las subvistas + limitaciones fue mayor que el estimado de altura. Ajuste de la self.tableView.estimatedRowHeight = 1000 (arbitraria en gran número) eliminó la restricción incompatible.
    • Si la brecha entre estimatedRowHeight y la altura real es demasiado grande, el formato tableview puede parpadear durante el desplazamiento rápido.
    • Puede » añadir estimatedRowHeight,esto hace que mi desplazamiento buggy y hace en formato tableview saltar y parpadeo después de cualquier reloadCell o reloadSections.
    • si estimatedRowHeight no funciona, entonces intenta tableView.translatesAutoresizingMaskIntoConstraints = false. Yo tenía este problema de limitación con un formato tableview en un contenedor de vista de una primaria controlador de vista de que ya tenía la estimatedRowHeight conjunto, y no fue hasta que me aseguré de que no estaba haciendo las limitaciones de la autoresizing máscara que dejé de recibir un montón de restricción de errores.
    • Tenga en cuenta que la parte inferior de la estimatedRowHeight el más a menudo cellForRowAtIndexPath será llamado inicialmente. formato tableview altura dividido por estimatedRowHeight veces, para ser exactos. En una de 12 pulgadas del iPad Pro, potencialmente, esto puede ser un número en el que miles y martillo el origen de datos y puede resultar en un retraso significativo.
    • Esto funciona con Xcode 10 y swift 4.2 🙂

  3. 31

    Yo era capaz de conseguir la advertencia a desaparecer mediante la especificación de un prioridad en uno de los valores en la restricción de los mensajes de advertencia que dice que tuvo que romper (por debajo de "Will attempt to recover by breaking constraint"). Parece que mientras establecer la prioridad a algo mayor que 49, la advertencia desaparece.

    Para mí esto significaba cambiar mi restricción de la advertencia, dijo que trató de romper:

    @"V:|[contentLabel]-[quoteeLabel]|"

    a:

    @"V:|[email protected][contentLabel]-[quoteeLabel]|"

    De hecho, puedo agregar una prioridad para cualquiera de los elementos de esa restricción y va a trabajar. Parece que no importa que uno. Mis células terminar la altura adecuada, y la advertencia que no se muestra. Roger, por su ejemplo, trate de añadir @500 a la derecha después de la 388 valor de la altura de la restricción (por ejemplo,[email protected]).

    No estoy del todo seguro de por qué esto funciona, pero he hecho un poco de investigación. En el NSLayoutPriority enum, parece que la NSLayoutPriorityFittingSizeCompression nivel de prioridad es 50. La documentación para que el nivel de prioridad dice:

    Cuando se envía un fittingSize mensaje a una vista, el tamaño más pequeño que
    es lo suficientemente grande como para que la vista del contenido es calculada. Este es el
    nivel de prioridad con el punto de vista que quiere ser tan pequeño como sea posible en
    que la computación. Es muy baja. En general no es adecuado para
    hacer una restricción exactamente a esta prioridad. Quieres ser de mayor o
    inferior.

    La documentación para la referencia de fittingSize mensaje dice:

    El tamaño mínimo de la opinión de que satisface las restricciones que tiene.
    (sólo lectura)

    AppKit establece esta propiedad en el mejor tamaño disponible para la vista,
    considerando todas las restricciones y su subvistas mantener y
    la satisfacción de una preferencia para hacer que la vista tan pequeño como sea posible. El
    el tamaño de los valores de esta propiedad son nunca negativo.

    No he cavado más allá de eso, pero que no parece tener sentido que esto tiene algo que ver con el lugar donde reside el problema.

    • Thatks Jeff. Todavía se siente como un error para mí. Apple no han responsed a la rdar a pesar de que 🙁
  4. 11

    Fui capaz de resolver este error mediante la eliminación de un falso cell.layoutIfNeeded() que yo tenía en mi tableView‘s cellForRowAt método.

    • Sí, ya esta resuelto el problema, para mí también. Yo estaba haciendo la disposición del código más arriba así que al principio pensé que yo podría perder algo. Gracias
    • La misma cosa! Gracias!
  5. 6

    Lugar de informar a la vista de la tabla para actualizar sus limitaciones, intente volver a cargar el celular:

    [tableView beginUpdates];
    
    [_briefCell collapse:!_showFullBriefText];
    
    [tableView reloadRowsAtIndexPaths:@[[tableView indexPathForCell:_briefCell]] withRowAnimation:UITableViewRowAnimationNone];
    
    [tableView endUpdates];

    UIView-Encapsulated-Layout-Height es, probablemente, la altura de la vista de tabla calculado para la célula durante la carga inicial, basado en la célula restricciones en ese momento.

    • Yo debería haber mencionado en mi pregunta, he intentado esto y no funciona. Estoy de acuerdo en su conjetura acerca de UIView-Encapsulado-Layout-Altura
    • Tienen la recompensa de todos modos por lo menos la presentación de una respuesta. Parece ASÍ que se acaba de dejar que se evapore lo contrario.
  6. 5

    Otra posibilidad:

    Si usted utiliza la función de diseño para calcular la altura de la celda (contentView la altura, la mayoría del tiempo como la de abajo), y si usted tiene uitableview separador, usted necesita agregar el separador de altura, con el fin de volver para la altura de la celda. Una vez que usted consiga la altura correcta, usted no tendrá que autodiseño de advertencia.

    - (CGFloat)calculateHeightForConfiguredSizingCell:(UITableViewCell *)sizingCell {
       [sizingCell setNeedsLayout];
       [sizingCell layoutIfNeeded];
       CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
       return size.height; //should + 1 here if my uitableviewseparatorstyle is not none
    
    }
    • Que me ayudó en un caso donde tengo el diseño de la altura de las ambigüedades en un complejo bonito el diseño de la célula sólo en algunos de los simuladores (iPad 6 Plus). A mí me parece que, debido a algunos errores de redondeo el contenido es un poco aprieta y si las restricciones no están preparados para ser exprimido que tengo ambigüedades. Así que en lugar de devolver UITableViewAutomaticDimension en heightForRowAtIndexPath vuelvo [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] + 0.1
    • Me refiero, por supuesto [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height + 0.1
  7. 3

    Como se ha mencionado por Jesse en la pregunta del comentario, esto me funciona:

    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

    Para su INFORMACIÓN, este problema no se produce en iOS 10.

    • En Swift 4.2: auto.contentView.autoresizingMask = [.flexibleHeight]
  8. 2

    He tenido este error cuando se utiliza UITableViewAutomaticDimension y cambiar la altura de la restricción en una vista interior de la célula.

    Finalmente me di cuenta de que era debido a la restricción el valor de la constante no ser redondeado al entero más cercano.

    let neededHeight = width / ratio //This is a CGFloat like 133.2353
    constraintPictureHeight.constant = neededHeight //Causes constraint error
    constraintPictureHeight.constant = ceil(neededHeight) // All good!
    • Este fue el comentario que aprender de mi, en mi problema. Tengo un celular de la imagen que se carga de forma dinámica (crece y se contrae) y un formato tableview con estimatedRowHeight = 50 y rowHeight = UITableViewAutomaticDimension. Yo todavía estaba rompiendo en las limitaciones aunque el formato tableview fue la altura correcta. Resulta que los separadores se 0.3333 en altura y eso era lo que patear el tamaño de la imagen de la restricción en la celda para ser roto. Después de apagar los separadores de que todo estaba bien. Gracias Che por darme lo que busca.
    • En este caso crear un extra de restricción, por ejemplo, bottomMargin >= [email protected] Autodiseño trata de adaptarse a la extra de 1 punto, cambia el tamaño de la celda, se confunde debido a que el separador de altura, intenta descanso/relax algunas restricciones, encuentra el @900, y descarta que. Usted obtener el diseño que desee sin advertencias.
    • guardar mi día a día. unas horas
  9. 1

    Tamaño de la vista de texto para que se ajuste a su contenido, y la actualización de la altura de la restricción de la constante a la altura resultante, fija la UIView-Encapsulated-Layout-Height restricción de conflicto para mí, por ejemplo:

    [self.textView sizeToFit];
    self.textViewHeightConstraint.constant = self.textView.frame.size.height;
    • Donde hiciste esto? En layoutSubviews?
  10. 1

    Después de pasar algunas horas rascándome la cabeza con este error que finalmente he encontrado una solución que funcionó para mí. mi principal problema era que yo tenía varias puntas registrado para diferentes tipos de células, pero un tipo de célula fue, específicamente, permite tener diferentes tamaños(no todos los casos de que la célula va a ser del mismo tamaño). así que el problema surgió cuando el formato tableview estaba tratando de eliminar de la cola de una célula de ese tipo y se pasó a tener una altura diferente. Lo resuelto por la configuración de

    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    self.frame = CGRectMake(0, 0, self.frame.size.width, {correct height});

    cada vez que la célula tenía sus datos para calcular su tamaño.
    Me imagino que puede ser en

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    algo como

    cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    cell.frame = CGRectMake(0, 0, self.frame.size.width, {correct height});

    Espero que esto ayude!

  11. 0

    Formato tableview obtener la altura de la celda en indexPath de delegado.
    a continuación, obtener células de cellForRowAtIndexPath:

    top (10@1000)
        cell
    bottom (0@1000)

    si la celda.contentView.altura:0 //<-> (UIView-Encapsulated-Layout-Height:[email protected])
    parte superior([email protected]) en conflicto con la (UIView-Encapsulated-Layout-Height:[email protected]),

    debido a que las prioridades son es igual a 1000.
    Necesitamos establecer como prioridad UIView-Encapsulated-Layout-Heightes la prioridad.

  12. 0

    Estaba recibiendo un mensaje como este:

    Incapaz de satisfacer simultáneamente las restricciones de…







    NSLayoutConstraint:0x7fe74bdf7e50 ‘UIView-Encapsulado-Layout-Altura’
    V:[UITableViewCellContentView:0x7fe75330c5c0(21.5)]





    Intentará recuperar por la ruptura de restricción
    NSLayoutConstraint:0x7fe0f9b200c0 UITableViewCellContentView:0x7fe0f9b1e090.bottomMargin == UILabel:0x7fe0f9b1e970.parte inferior

    Estoy usando una costumbre UITableViewCell con UITableViewAutomaticDimension para la altura. Y también he implementado el estimatedHeightForRowAtIndex: método.

    La restricción de que me estaba dando problemas veía algo como esto

    [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[title]-|" options:0 metrics:nil views:views];

    Cambiar la restricción de que esto solucione el problema, pero como en la otra respuesta, yo sentía que esto no era correcta, ya que se reduce la prioridad de una restricción que quiero ser necesario:

    [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[email protected][title][email protected]|" options:0 metrics:nil views:views];

    Sin embargo, lo que he notado es que si en realidad me acaba de quitar la prioridad, esto también funciona y no me da la ruptura de la restricción de registros:

    [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-6-[title]-6-|" options:0 metrics:nil views:views];

    Esto es un poco de un misterio en cuanto a cuál es la diferencia entre |-6-[title]-6-| y |-[title-|. Pero al especificar el tamaño no es un problema para mí y se deshace de los registros, y no necesito más baja es la prioridad de mi requerida restricciones.

  13. -1

    Establecer este view.translatesAutoresizingMaskIntoConstraints = NO; debe resolver este problema.

    • Esto funcionó a la perfección para mí, incluso si no era la solución perfecta.

Dejar respuesta

Please enter your comment!
Please enter your name here