Es gibt einige große Änderungen in 10.12, aber meiner Meinung nach ist das größte das neue Auto-Layout-System (oder geändert/neu geschrieben alten ... wer weiß). Ich habe ein einfaches Projekt vorbereitet, um das Problem zu demonstrieren. Es bezieht sich auf das Kollabieren eines Split-View-Objekts über eine Schaltfläche. Es passiert nur am 10.12. Alles, was Sie tun müssen, ist das Projekt zu kompilieren und klicken Sie auf die Schaltfläche. Ein Fehler wird angezeigt:macOS 10.12 Auto-Layout Probleme
2016-10-04 15: 10: 28.284296 test-12 [64932: 7425277] [Layout] Erkannte fehlende Einschränkungen für. Es kann nicht platziert werden, da nicht genügend Einschränkungen vorhanden sind, um die Größe und den Ursprung vollständig zu definieren. Fügen Sie die fehlenden Einschränkungen hinzu, oder legen Sie translatedAutoresizingMaskIntoConstraints = YES fest, und die Einschränkungen werden für Sie generiert. Wenn diese Ansicht manuell auf macOS 10.12 und höher erstellt wird, können Sie wählen, [Super-Layout] nicht von Ihrer Überschreibung aufzurufen. Setzen Sie einen Breakpoint auf DETECTED_MISSING_CONSTRAINTS, um zu debuggen. Dieser Fehler wird nur einmal protokolliert.
Nach einen Haltepunkt setzen wir herausfinden können, dass die problematische Ansicht ist:
(lldb) po $arg1
<NSSplitDividerView: 0x618000161980>
Bin ich völlig falsch, oder es gibt ein bestimmtes Problem mit 10,12? Und bitte beraten Sie, wie Sie solche Fehler nach Möglichkeit vermeiden können.
Das Projekt kann von github
einmal danke Ihnen nochmals für die Hilfe heruntergeladen werden.
I. Nikolov
Ich kann diese Nachricht einfach durch Aufrufen von NSAlert.layout() auslösen, um die Warnung zu erzwingen, sich sofort auszugeben. Da keiner der Vorschläge in diesem Fall funktioniert und es keine offensichtliche Möglichkeit gibt, den Fehler zu vermeiden, habe ich ein Radargerät angemeldet (rdar: // 28700495). – rsfinn
Ich behebe dieses Problem, indem ich "falsch" von "splitView" (_ splitView: NSSsplitView, sollteHideDividerAt dividerIndex: Int) zurückgeben -> Bool "in meinem' NSSplitViewController'. – LShi
@LShi: Danke ich hatte das gleiche Problem und es hat auch für mich funktioniert. – mschmidt