Gibt es eine Möglichkeit, Autolayout-Fehler- / Warnmeldungen (vorübergehend) zu deaktivieren:
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:0x170098420 H:[UIView:0x15c62c100(2)]>",
"<NSLayoutConstraint:0x170098600 UIView:0x15c6294f0.leading == UIView:0x15c628d40.leadingMargin - 8>",
"<NSLayoutConstraint:0x170098650 H:[UIView:0x15c6294f0]-(0)-[UIView:0x15c62b750]>",
"<NSLayoutConstraint:0x1700986a0 UIView:0x15c62b750.width == UIView:0x15c6294f0.width>",
"<NSLayoutConstraint:0x1700986f0 UIView:0x15c628d40.trailingMargin == UIView:0x15c62b750.trailing - 8>",
"<NSLayoutConstraint:0x170098880 H:[UIView:0x15c6294f0]-(0)-[UIView:0x15c62c100]>",
"<NSLayoutConstraint:0x1700988d0 UIView:0x15c628d40.centerX == UIView:0x15c62c100.centerX + 1>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170098420 H:[UIView:0x15c62c100(2)]>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
ios
xcode
autolayout
Markus Rautopuro
quelle
quelle
ONLY
beste Weg, um diese Nachrichten loszuwerdenAntworten:
Hat etwas dekompiliert und es gibt tatsächlich einen Weg:
für Swift 5
UserDefaults.standard.set(false, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")
Ziel c
[[NSUserDefaults standardUserDefaults] setValue:@(NO) forKey:@"_UIConstraintBasedLayoutLogUnsatisfiable"];
Jetzt werden Sie nur benachrichtigt, dass "_UIConstraintBasedLayoutLogUnsatisfiable OFF ist".
Obligatorische Erinnerung für alle, die dies lesen: Dies sollte der letzte Ausweg sein. Tipps zum Debuggen und Beheben von Einschränkungen finden Sie in den WWDC-Sitzungen "Mysteries of Auto Layout": Teil 1 und Teil 2 .
quelle
applicationDidFinishLaunching
zum Beispiel in tun .Swift 4.0 & Swift 5.0 Lösung:
//Hide Autolayout Warning UserDefaults.standard.set(false, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")
Swift 3.0-Lösung:
//Hide Autolayout Warning UserDefaults.standard.setValue(false, forKey:"_UIConstraintBasedLayoutLogUnsatisfiable")
quelle
Eine weitere Option ist das vorübergehende Einfügen
-_UIConstraintBasedLayoutLogUnsatisfiable NO
(beachten Sie den Bindestrich) in dasArguments Passed On Launch
Menü unter derProduct -> Scheme -> Edit Scheme... -> Run -> Arguments
Registerkarte (Sie können dieses Menü auch durch Drücken von ⇧+ ⌘+ öffnen <) wie folgt:quelle
für alle, die sich fragen, wie man dieses macOS / osx mit AppKit / Cocoa macht
UserDefaults.standard.set(false, forKey: "NSConstraintBasedLayoutLogUnsatisfiable") UserDefaults.standard.set(false, forKey: "__NSConstraintBasedLayoutLogUnsatisfiable")
quelle
Ich habe versucht, dies mit lldb zu lösen und habe eine Lösung gefunden:
Wenn in Ihrer App ein Layoutproblem auftritt, wird die Ausführung angehalten. Mit der Anweisung "thread return" muss die Funktion UIViewAlertForUnsatisfiableConstraints, die den Fehler ausgibt, zurückkehren, bevor die Warnmeldung in die Konsole gedruckt wird.
Mit dem Befehl "c" wird die Ausführung Ihrer App fortgesetzt (Hinweis: "Nach Auswertung von Aktionen automatisch fortsetzen" funktioniert in diesem Fall irgendwie nicht).
Bei diesen automatischen Aktionen verhält sich der Haltepunkt jedoch wahrscheinlich seltsam, wenn er zweimal getroffen wird Eine Zeile, die zum Absturz Ihrer App führt. Um dies zu lösen, können Sie die Haltepunktaktionen entfernen und die Befehle manuell eingeben, wenn der Debugger die Ausführung des Programms anhält.
quelle