2017-01-08 5 views
0

Несмотря на добавление ограничений на ведущие и верхние якоря для моих кнопок (я пытаюсь отобразить их в списке), представление отображает их все в левом верхнем углу представления. Я использую множество методов, чтобы попытаться применить ограничения, но ни один из них, похоже, не работает. Помогите!Отображение кнопок с программными ограничениями

func displayButtonArray(buttons: [UIButton]) { 
    var previousButton: UIButton = buttons[0] 
    for (i, button) in buttons.enumerated() { 
     button.setTitle("SampleButton", for: .normal) 
     button.setTitleColor(.black, for: .normal) 
     button.sizeToFit() 

     let margins = self.view.layoutMarginsGuide 
     button.leadingAnchor.constraint(equalTo: margins.leadingAnchor) 
     if i == 1 { 
      button.topAnchor.constraint(equalTo: margins.topAnchor, constant: CGFloat(5.0)) 
     } else { 
      button.topAnchor.constraint(equalTo: previousButton.bottomAnchor, constant: CGFloat(10.0)) 
     } 
     previousButton = button 

     button.translatesAutoresizingMaskIntoConstraints = false 
     button.setNeedsUpdateConstraints() 
     button.setNeedsLayout() 

     self.view.addSubview(button) 
    } 
    self.view.setNeedsUpdateConstraints() 
    self.view.setNeedsLayout() 
    self.view.layoutSubviews() 
} 
+0

Нашел свою проблему, мне нужно установить .isActive = true для ограничений, которые я создал. Я предположил, что функции будут иметь побочные эффекты, если вместо этого они создадут ограничения, если для isActive установлено значение true, тогда у него будут побочные эффекты – baoskees

ответ

0

Как вы указали, ограничения определены, но не активированы.

Я могу добавить, что, как упоминалось в Apple, ограничения AutoLayout должны быть активированы вместе.

Вы можете активировать их один за другим, но более эффективно их активировать; что приводит к повышению производительности.

 Смежные вопросы

  • Нет связанных вопросов^_^