2015-08-26 29 views

Odpowiedz

5

Takie podejście polega na użyciu opcji NSLayoutConstraint, w której self.cenBut to numer IBoutletu dla przycisku.

func setupConstraints() { 
    let centerX = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0) 
    let centerY = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0) 
    let height = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 22) 
    self.cenBut.translatesAutoresizingMaskIntoConstraints = false 
    self.view.addConstraints([centerX, centerY, height]) 
} 

W viewDidLoad()

self.view.removeConstraints(self.view.constraints) 
self.setupConstraints() 
+0

Próbowałem go również ale to daje mi błąd, w każdym razie dzięki za pomoc! –

11

Spróbuj .center nieruchomości jak

myButton.center = self.view.center 

Można również określić x i y Jeśli potrzebujesz.

myButton.center.x = self.view.center.x // for horizontal 
myButton.center.y = self.view.center.y // for vertical 
0

Byłbym

yourButton.setCenter(self.view.center); 

Należy jednak pamiętać, że jeśli programowo ustawić ramkę widoku, swoje ograniczenia układ może nie działać zgodnie z oczekiwaniami.

0

ponieważ używasz ograniczeń, nie będzie w stanie ustawić centrum więc trzeba użyć, aby ustawić ograniczenia centrum, a także:

let centerYCon = NSLayoutConstraint(item: labelMessage, 
     attribute: .CenterY, 
     relatedBy: .Equal, 
     toItem: contentView, 
     attribute: .CenterY, 
     multiplier: 1.0, 
     constant: 0.0); 
    contentView.addConstraint(centerYCon); 


    let centerXCon = NSLayoutConstraint(item: labelMessage, 
     attribute: .CenterX, 
     relatedBy: .Equal, 
     toItem: contentView, 
     attribute: .CenterX, 
     multiplier: 1.0, 
     constant: 0.0); 
    contentView.addConstraint(centerXCon); 

Zakładam, że wiesz, co „programowo "oznacza z ograniczeniami autolayout. Jeśli naprawdę używasz autolayout, musisz ustawić właściwości swojego przycisku, aby setTranslatesAutoresizingMaskIntoConstraints na false.

+0

dzięki, w jaki sposób ustawić setTranslatesAutoresizingMaskIntoConstraints fałsz? –

+0

Próbowałem już tego, ale nadal daje mi błąd –

+0

jaki jest błąd? – Loxx