W 10.12 jest kilka ogromnych zmian, ale moim zdaniem największy jest nowy układ automatyczny (lub zmodyfikowany/przepisany stary ... kto wie). Przygotowałem prosty projekt, aby zademonstrować problem. Jest to związane ze zwijaniem elementu widoku podzielonego za pomocą przycisku. Zdarza się tylko 10.12. Wszystko, co musisz zrobić, to skompilować projekt i kliknąć przycisk. Zostanie wyświetlony błąd:Problemy z układem automatycznym macOS 10.12
2016-10-04 15: 10: 28.284296 test-12 [64932: 7425277] [Układ] Wykryto brakujące ograniczenia dla. Nie można go umieścić, ponieważ nie ma wystarczających ograniczeń, aby w pełni zdefiniować rozmiar i pochodzenie. Dodaj brakujące więzy lub ustaw translatesAutoresizingMaskIntoConstraints = YES i zostaną wygenerowane więzy dla ciebie. Jeśli widok ten jest układany ręcznie w systemie MacOS 10.12 i nowszych wersjach, możesz nie wywoływać [super układu] z nadpisania. Ustaw punkt przerwania na DETECTED_MISSING_CONSTRAINTS, aby debugować. Ten błąd zostanie zarejestrowany tylko raz.
Po ustawieniu punktu przerwania możemy dowiedzieć się, że widok jest problematyczne:
(lldb) po $arg1
<NSSplitDividerView: 0x618000161980>
Am I całkowicie błędne lub jest określony problem z 10.12? I proszę doradzić, jak zapobiegać tego typu błędom, jeśli to możliwe.
Projekt można pobrać z github
Jeszcze raz dziękuję za pomoc.
I. Nikolov
Mogę uruchomić ten komunikat, po prostu dzwoniąc do NSAlert.layout(), aby wymusić natychmiastowe zgłoszenie się alertu. Ponieważ żadna z sugestii nie działa w tym przypadku i nie ma oczywistego sposobu na uniknięcie błędu, zgłosiłem radar (rdar: // 28700495). – rsfinn
Rozwiązuję ten problem, zwracając 'false' z' splitView (_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool' w moim 'NSSplitViewController'. – LShi
@LShi: Dzięki miałem ten sam problem i to działało również dla mnie. – mschmidt