Doceniam, że XCode złapie niezatłumialne NSLayoutConstraints
i poda pewne informacje na ten temat, jednak nie wiem, jak wziąć adresy pamięci kontrolek/wiązań i mapować je do rzeczywiste kontrole, które mają problem.Odwzorowywanie adresów niewystarczających ograniczeń NSLayoutConstraint na elementy sterujące interfejsu użytkownika
Moja aplikacja jest dość duża (około 20 ekranów), niektóre z nich są dużymi kontrolerami UIViewController z kilkoma kontrolerami widoku dziecka. Niektóre są UITableViews z niestandardowymi komórkami i UICollectionViews z niestandardowymi komórkami. Mam piekło czasu sklejaniu dół przyczynę tego błędu (co zdarza się na rotacji poziomej)
Oto informacja z mojego konsoli:
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.
Jak widać, istnieje pamięć wymienione adresy. Wklejenie tych elementów w pasku wyszukiwania okna zegarka niewiele się odsłania. Przeszukując wątki i stosy wywołań w kolejce, otrzymuję tylko zdemontowany kod w tym punkcie przerwania (punkt przerwania wyjątków).
wizualizacjaConstraints działa tylko na OS X –
Whoops! Z jakiegoś powodu myślałem, że UILayoutConstraint to coś, dlatego pomyślałem, że to na Macu. Sądzę, że nie przeczytałem dokładnie tego pytania! –