Apprezzo che XCode catturi l'inviolabile NSLayoutConstraints
e ti fornisca alcune informazioni a riguardo, tuttavia non so come prendere gli indirizzi di memoria dei controlli/vincoli e mapparli al controlli effettivi che hanno problemi.Mappatura dell'indirizzo di memoria di NSLayoutConstraints non soddisfacente ai controlli dell'interfaccia utente
La mia app è abbastanza grande (circa 20 schermi), alcuni sono grandi UIViewControllers con diversi controller di visualizzazione figlio al loro interno. Alcuni sono UITableViews con celle personalizzate e UICollectionViews con celle personalizzate. Sto avendo un sacco di tempo virate verso il basso la causa di questo errore (che avviene a rotazione orizzontale)
Ecco le informazioni dalla mia console:
2013-05-02 11:18:53.225 Smile[7519:c07] 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:0x16083b60 h=-&- v=-&- UIView:0xa5a1d00.width == UIWindow:0xa09eee0.width>",
"<NSLayoutConstraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-| (Names: '|':UIView:0xa5a1d00)>",
"<NSLayoutConstraint:0xa5a2140 V:|-(0)-[UIView:0xa59f160] (Names: '|':UIView:0xa5a1d00)>",
"<NSAutoresizingMaskLayoutConstraint:0xa593340 h=--- v=--- H:[UIWindow:0xa09eee0(768)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-| (Names: '|':UIView:0xa5a1d00)>
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.
Come si può vedere, ci sono la memoria indirizzi elencati. Incollare quelli nella barra di ricerca della finestra di controllo non rivela molto. Inoltre, spulciando gli stack delle chiamate thread e code, ottengo solo codice disassemblato su questo breakpoint (punto di interruzione delle eccezioni).
visualizeConstraints funziona solo su OS X –
Whoops! Per qualche ragione, ho pensato che UILayoutConstraint fosse una cosa, e quindi ho pensato che fosse sul Mac. Immagino di non aver letto abbastanza attentamente la domanda! –