2016-05-26 31 views
0

Ich versuche, einen Set-Frame mit Einschränkungen für eine UIButton zu ersetzen, aber mein Code stürzt ab, was mache ich falsch?Constraints, um Frame für UIButton zu ersetzen

- (void)CreateButton { 
self.Button = [[UIButton alloc] init]; 
//self.Button.frame = CGRectMake(30, 30, 100, 100); 
[self.Button addConstraint:[NSLayoutConstraint constraintWithItem:MyScrollView 
                  attribute:NSLayoutAttributeTop 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.myButton 
                  attribute:NSLayoutAttributeTop 
                 multiplier:2.0 
                  constant:30]]; 
[self.myButton addConstraint:[NSLayoutConstraint constraintWithItem:MyScrollView 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.myButton 
                  attribute:NSLayoutAttributeHeight 
                 multiplier:3.0 
                  constant:50]]; 
[self.myButton setBackgroundColor:[UIColor orangeColor]]; 
[self.myButton setTitle:@"Press Me" forState:UIControlStateNormal]; 
[self.myButton setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal]; 
[MyScrollView addSubview:self.myButton]; 
+2

* "Crashing" *, hmm? Wir könnten Ihnen wahrscheinlich mehr helfen, wenn Sie uns die Fehlermeldung ** zeigen und ** die ** genaue ** Zeile Ihres Codes nennen, die den Absturz verursacht. – luk2302

+0

vorausgesetzt, Sie wollen Constraints für eine einzelne Schaltfläche einrichten, zumindest haben Sie zwei verschiedene im obigen Code (self.Button und self.myButton) – slxl

+0

und versuchen, Obj-C Namenskonventionen für die Einfachheit des Universums zu halten. Das wird Ihnen helfen, solche Probleme in Zukunft zu vermeiden. Https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html – slxl

Antwort

0

Sie sollten die Einschränkung zu MyScrollView hinzufügen.

+0

schreiben, die nicht zu einem Absturz führen sollte. –

+0

Aus der Dokumentation von UIView: addConstraint: "Die Einschränkung muss nur Ansichten enthalten, die sich im Bereich der empfangenden Ansicht befinden. Insbesondere müssen alle beteiligten Ansichten entweder die empfangende Ansicht selbst oder eine Teilansicht der empfangenden Ansicht sein. Hinzugefügte Einschränkungen einer Ansicht wird von dieser Ansicht gehalten. Das Koordinatensystem, das bei der Bewertung der Abhängigkeit verwendet wird, ist das Koordinatensystem der Ansicht, die die Beschränkung enthält. " – fabe