A continuación se muestra el mensaje de error que recibo en el área de depuración. Funciona bien y no pasa nada, excepto que recibo este error. ¿Esto evitaría que Apple acepte la aplicación? ¿Cómo lo soluciono?
2012-07-26 01:58:18.621 Rolo[33597:11303] 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)
(
"<NSAutoresizingMaskLayoutConstraint:0x887d630 h=--& v=--& V:[UIButtonLabel:0x886ed80(19)]>",
"<NSAutoresizingMaskLayoutConstraint:0x887d5f0 h=--& v=--& UIButtonLabel:0x886ed80.midY == + 37.5>",
"<NSAutoresizingMaskLayoutConstraint:0x887b4b0 h=--& v=--& V:[UIButtonLabel:0x72bb9b0(19)]>",
"<NSAutoresizingMaskLayoutConstraint:0x887b470 h=--& v=--& UIButtonLabel:0x72bb9b0.midY == - 0.5>",
"<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>",
"<NSLayoutConstraint:0x72c2430 UILabel:0x72bfad0.top == UILabel:0x72bf7c0.top>",
"<NSLayoutConstraint:0x72c2370 UILabel:0x72c0270.top == UILabel:0x72bfad0.top>",
"<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>",
"<NSLayoutConstraint:0x72c15b0 V:[UILabel:0x72c0270]-(NSSpace(8))-[UIRoundedRectButton:0x72bbc10]>",
"<NSLayoutConstraint:0x72c1570 UIRoundedRectButton:0x72bbc10.baseline == UIRoundedRectButton:0x7571170.baseline>",
"<NSLayoutConstraint:0x72c21f0 UIRoundedRectButton:0x7571170.top == UIButton:0x886efe0.top>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
ios
objective-c
debugging
nslayoutconstraint
Johnny Cox
fuente
fuente
Respuestas:
Recomendaría depurar y encontrar qué restricción es "la que no desea" . Supongamos que tiene el siguiente problema:
Siempre el problema es cómo encontrar las siguientes Restricciones y Vistas.
Hay dos soluciones para hacer esto:
Como sabe dónde encontrar restricciones inesperadas (PBOUserWorkDayHeaderView), hay una manera de hacerlo bastante bien. Vamos a buscar
UIView
yNSLayoutConstraint
en rectángulos rojos. Como sabemos su identificación en la memoria , es bastante fácil.Como puede ver, los punteros de memoria son los mismos. Entonces sabemos lo que está sucediendo ahora. Además puede encontrar
NSLayoutConstraint
en la vista jerarquía. Como está seleccionado en Ver, también se seleccionó en Navigator.Si lo necesita, también puede imprimirlo en la consola con el puntero de dirección:
Puede hacer lo mismo para cada restricción que el depurador le señalará :-) Ahora usted decide qué hacer con esto.
IMPRIMA MEJOR (Realmente recomiendo de esta manera, esto es de Xcode 7)
NSLayoutConstraint
:SWIFT :
C OBJETIVO
id
puede simplemente tocarlo en su Find Navigator :¿CÓMO SIMPLE ARREGLAR ESE CASO?
999
por restricción rota.fuente
El problema que tienes es que NSAutoresizingMaskLayoutConstraints no debería estar allí. Este es el viejo sistema de resortes y puntales. Para deshacerse de él, ejecute este método en cada vista que desee restringir:
fuente
Tenga cuidado , no use más de una restricción en la misma dirección y tipo.
Por ejemplo: Restricción vertical para trailing = 15 y otra es> = 10.
A veces, Xcode crea algunas restricciones que no notas . Usted tiene que deshacerse de las restricciones redundantes y la advertencia del registro seguramente desaparecerá.
Además, puede leer y detectar ciertas razones, directamente desde el registro :
Esto lo podemos leer como un problema en la restricción UILabel, es la restricción vertical principal de 15 puntos de longitud.
Esto estaría detrás de la restricción horizontal, etc.
fuente
Tuve un buen número de estas excepciones, la forma más rápida y fácil que encontré para resolverlas fue encontrar valores únicos en las excepciones que luego busqué en el código fuente del guión gráfico. Esto me ayudó a encontrar las vistas y restricciones reales que causan el problema (uso userLabels significativos en todas las vistas, lo que hace que sea mucho más fácil rastrear las restricciones y vistas) ...
Entonces, usando las excepciones anteriores, abriría el guión gráfico como "código fuente" en xcode (u otro editor) y buscaría algo que pueda encontrar ...
.. esto parece una restricción vertical (V) en un UILabel con un valor de (17).
Mirando a través de las excepciones también encuentro
Parece que el UILabel (0x72bf7c0) está cerca de un UIButton (0x886efe0) con algo de espacio vertical (8).
Espero que eso sea suficiente para que encuentre las vistas específicas en el código fuente del guión gráfico (probablemente buscando inicialmente en el texto "17"), o al menos algunos candidatos probables. A partir de ahí, debería ser capaz de averiguar qué vistas están en el guión gráfico, lo que hará que sea mucho más fácil identificar el problema (busque la fijación o fijación "duplicada" que entra en conflicto con las restricciones de tamaño).
fuente
Me costó descubrir qué restricciones estaban causando este error. Aquí hay una manera más simple de hacerlo.
Estoy usando Xcode 6.1.1
fuente
Tuve este problema porque mis
.xib
archivos estaban usando autolayout.En el inspector de archivos, primera pestaña. Desmarcar "Usar Autolayout" resolvió el problema.
fuente
UIImageView
ha cambiado. Debe establecer esta posición nuevamente, ya sea mediante programación o mediante el Generador de interfaces.Aquí está mi experiencia y solución. No toqué el código
fuente
use rápido este código
fuente
He seguido SO preguntas y respuestas de cada consulta de búsqueda. Pero todos están relacionados con uno específico.
Básicamente, quiero decir, antes de escribir un formato (puede ser simple), le dará advertencias.
Desde iOS 8.0, las vistas predeterminadas son clases de tamaño. Incluso si deshabilita las clases de tamaño, seguirá conteniendo algunas restricciones de diseño automático.
Entonces, si planea establecer restricciones a través del código usando VFL. Entonces debes ocuparte de uno debajo de la línea.
Había buscado mucho en SO, pero la solución estaba en el código de muestra de Apple .
Por lo tanto, debe eliminar las restricciones predeterminadas antes de planear agregar una nueva.
fuente
Para mí, la razón principal de este problema fue que olvidé desmarcar
AutoLayout
en elXib
editor. De hecho, hice muchos ajustesXIB
en el código.fuente
Esto me ayudó a captar la vista que causa el problema.
fuente
Ninguna de las respuestas anteriores es útil en mi situación. Estoy ejecutando XCode 10.1 y probando mi aplicación en el simulador para un "iPad (5ta generación)". El simulador ejecuta iOS 12.1.
Tengo una vista raíz simple en mi guión gráfico, con dos subvistas UITextField. No se utilizan restricciones en el guión gráfico en absoluto. Y no tengo objetos UIButtonBarView en la aplicación o el guión gráfico.
No se imprimen mensajes cuando se inicia la aplicación y se despliega la vista raíz. Ninguno cuando se gira el dispositivo simulado.
Pero en el simulador, en el momento en que hago clic en uno de los campos de texto, la extensión del teclado surge desde la parte inferior de la pantalla, aunque no el teclado completo, que nunca parece aparecer en el simulador. Pero lo siguiente está impreso en la terminal:
Ciertamente me parece que todo esto tiene que ver con nada en mi aplicación, y todo lo que tiene que ver con cómo Apple está creando su propia vista de teclado, incluso con mi pequeña extensión declarada como combinada con ella.
Entonces, la pregunta sigue siendo, ¿hay algo que yo como desarrollador de aplicaciones soy responsable de hacer (suponiendo que esto sea un montón de cosas que vale la pena atender) o es solo el problema / error de Apple?
FWIW, este mensaje de problema de restricción no se produce al simular un modelo de iPad más nuevo, como el iPad Pro de 12.9 pulgadas (tercera generación). Pero el mensaje aparece cuando se simula un iPad Pro de 9.7 pulgadas ". Todos afirman que están ejecutando iOS 12.1.
fuente
Recibo el mismo error, pero solo en una vista específica, cuando toco el primer campo de texto y luego el siguiente campo de texto hacia abajo.
Estoy escribiendo en SwiftUI para iOS 13.4
fuente
También recibía el mismo problema de romper restricciones en el registro, para un viewCircle en el xib. Casi probé todo lo mencionado anteriormente y nada funcionaba para mí. Luego intenté cambiar la prioridad de la restricción de Altura que se estaba rompiendo en el registro (confirmado al agregar un identificador para las restricciones en el xib). Ingrese la descripción de la imagen aquí.
fuente
Una cosa a tener en cuenta (al menos esto me hizo tropezar) fue que estaba eliminando la restricción de la vista incorrecta. La restricción que estaba tratando de eliminar no era una restricción secundaria de mi vista, así que cuando lo hice
en realidad no estaba eliminando nada porque necesitaba llamar
ya que la restricción era técnicamente la restricción de hermanos de mi punto de vista.
fuente
rápido 4
Solo agrego esta línea en viewDidLoad y funciona bien conmigo.
fuente