2015-07-21 16 views
5

Mam programowany dodatek UIImageView i przycisk dodany do Storyboard. A teraz muszę dodać między nimi "Odstęp w pionie", ale nie wiem, jak to zrobić. Byłoby proste, gdyby Dodałem UIImageView w Storyboard:Dodaj "Odstępy w pionie" programowo w swift

enter image description here

Jak mogę rozwiązać ten problem?

+0

należy również dodać ograniczeń programowo https://developer.apple.com/library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/#//apple_ref/occ/clm/NSLayoutConstraint/constraintWithItem:attribute:relatedBy: toItem: attribute: multipiplier: constant: –

Odpowiedz

12

Pozwolić przypuszczać Twój UIImageView dodaje się w górę, jak można umieścić na zdjęciu powyżej, a następnie można dodać ograniczenia programowo jak w następujący sposób:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // assuming here you have added the self.imageView to the main view and it was declared before. 
    self.imageView.setTranslatesAutoresizingMaskIntoConstraints(false) 

    // create the constraints with the constant value you want. 
    var verticalSpace = NSLayoutConstraint(item: self.imageView, attribute: .Bottom, relatedBy: .Equal, toItem: self.button, attribute: .Bottom, multiplier: 1, constant: 50) 

    // activate the constraints 
    NSLayoutConstraint.activateConstraints([verticalSpace]) 
} 

W powyższy kod I umieścić tylko ograniczenia przestrzeni pionowej, musisz ustawić niezbędne ograniczenia, aby uniknąć ostrzeżenia o tym.

Istnieje kilka sposobów programowego dodawania ograniczeń. W tej bardzo miłej odpowiedzi można przeczytać więcej: SWIFT | Adding constraints programmatically.

Mam nadzieję, że ci to pomoże.

+0

Dziękuję za odpowiedź, ale teraz pojawia się błąd: "Nie można aktywować ograniczenia za pomocą elementów Steve

+0

Dobrze, dziękuję! – Steve

+1

dlaczego nie jest to atrybut: .Top'? – Liumx31

1

Powinieneś rzucić okiem na visual format language, a następnie spójrz na dokumentację, jak programowo tworzyć ograniczenia here. Zasadniczo będzie wyglądał jak ten

NSDictionary *viewsDictionary = 
    NSDictionaryOfVariableBindings(self.imageView, self.button); 
    NSArray *constraints = 
    [NSLayoutConstraint constraintsWithVisualFormat:@"V:[imageView]-10-[button]" 
              options:0 metrics:nil views:viewsDictionary]; 
1

Aby programowo dodać pionowy odstęp między 2 widokami, można użyć następującego kodu: Swift 3.

view2 to widok z góry, natomiast view1 widoku od dołu.

let verticalSpace = NSLayoutConstraint(item: view1, attribute: .top, relatedBy: .equal, toItem: view2, attribute: .bottom, multiplier: 1, constant: 0) 
NSLayoutConstraint.activate([verticalSpace]) 

Uwaga: Aby to działało, należy dodać pozycję poziomą.

Powiązane problemy