J'ai le code de test simple suivant dans mon contrôleur:Autolayout conflit de contrainte lorsque je spécifie une seule contrainte
- (void)loadView
{
UIView *view = [UIView new];
[self setView:view];
UILabel *label = [UILabel new];
[label setText:@"Hello World!"];
[view addSubview:label];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[label]"
options:0 metrics:nil views:NSDictionaryOfVariableBindings(label)]];
}
Le code échoue à l'exception suivante et je ne peux pas comprendre pourquoi. Toute aide serait grandement appréciée:
2013-04-15 14:15:47.880 libmarkup-test[1072: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)
(
"<NSLayoutConstraint:0x753eb60 H:|-(NSSpace(20))-[UILabel:0x7536b60] (Names: '|':UIView:0x75376a0)>",
"<NSAutoresizingMaskLayoutConstraint:0x712a2c0 h=--& v=--& UILabel:0x7536b60.midX ==>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x753eb60 H:|-(NSSpace(20))-[UILabel:0x7536b60] (Names: '|':UIView:0x75376a0)>
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.
Le message « incapable de satisfaire simultanément les contraintes » est particulièrement déroutant puisque, pour autant que je peux dire, je ne spécifier une contrainte.
Pour une raison quelconque, la question a été postée avant que j'aie fini de l'écrire. –
Greg: où définissez-vous le cadre de la vue? et pourquoi utilisez-vous setView? Voulez-vous ajouter cette vue que vous créez en tant que sous-vue pour un contrôleur? Je ne suis pas sûr que nous avons assez d'informations pour vous aider. –
Je ne suis pas en train de régler le cadre de la vue - je le règle comme vue pour mon contrôleur. Le contrôleur le dimensionne pour remplir l'écran. Ce code est en cours d'exécution dans loadView. J'ai ajouté plus de contexte à l'exemple de code. –