У меня есть следующий код, работающий для ограничений высоты и ширины.Сбой при попытке добавить ведущее ограничение и верхнее ограничение.У меня есть другие наборы кнопок, которые имеют ограничения по высоте, ширине, лидирующим, верхним ограничениям, но все они были настроены на раскадровке, поэтому я считаю, что это единственные 4 ограничения, которые я ДОЛЖЕН добавить к каждой кнопке.
У меня есть7 кнопок, каждая на день недели.Когда я добавляю код для ограничения сверху и снизу, он разрывается с кодом ошибки ниже.Он отлично работает только с высотой / шириной.Я предполагаю, что это связано с тем, как я добавляю подпредставления или отношения кнопок к контроллеру представления ИЛИ при выполнении программно мне нужно больше, чем 4 ограничения (ведущий, верхний, ширина, высота), которые я использовална раскадровке.
СПАСИБО за понимание
func setupWeekdayButtons() {
self.weeklyButtons = [self.mondayButton, self.tuesdayButton, self.wednesdayButton, self.thursdayButton, self.fridayButton, self.saturdayButton, self.sundayButton]
for i in 0...6 {
print(i)
self.weeklyButtons[i].translatesAutoresizingMaskIntoConstraints = false
self.weeklyButtons[i].setTitle(self.weekdayLabels[i], for: .normal)
self.weeklyButtons[i].layer.borderColor = UIColor.black.cgColor
self.weeklyButtons[i].titleLabel?.textAlignment = .center
self.weeklyButtons[i].layer.borderWidth = 1.0
self.weeklyButtons[i].layer.cornerRadius = 6.0
self.weeklyButtons[i].setTitleColor(.black, for: .normal)
self.weeklyButtons[i].setTitleColor(.red, for: .selected)
self.weeklyButtons[i].addTarget(self, action: #selector(selectedDailyButton), for: .touchUpInside)
self.view.addSubview(self.weeklyButtons[i])
let heightConstraint = NSLayoutConstraint(
item: self.weeklyButtons[i],
attribute: NSLayoutConstraint.Attribute.height,
relatedBy: NSLayoutConstraint.Relation.equal,
toItem: nil,
attribute: NSLayoutConstraint.Attribute.notAnAttribute,
multiplier: 1.0,
constant: 30
)
let widthConstraint = NSLayoutConstraint(
item: self.weeklyButtons[i],
attribute: NSLayoutConstraint.Attribute.width,
relatedBy: NSLayoutConstraint.Relation.equal,
toItem: nil,
attribute: NSLayoutConstraint.Attribute.notAnAttribute,
multiplier: 1.0,
constant: 30
)
let leadingConstraint = NSLayoutConstraint(
item: self.weeklyButtons[i],
attribute: NSLayoutConstraint.Attribute.leading,
relatedBy: NSLayoutConstraint.Relation.equal,
toItem: self.view,
attribute: NSLayoutConstraint.Attribute.leading,
multiplier: 1.0,
constant: 100
)
let topConstraint = NSLayoutConstraint(
item: self.weeklyButtons[i],
attribute: NSLayoutConstraint.Attribute.top,
relatedBy: NSLayoutConstraint.Relation.equal,
toItem: self.view,
attribute: NSLayoutConstraint.Attribute.top,
multiplier: 1.0,
constant: 100
)
self.weeklyButtons[i].addConstraint(heightConstraint)
self.weeklyButtons[i].addConstraint(widthConstraint)
self.weeklyButtons[i].addConstraint(leadingConstraint)
self.weeklyButtons[i].addConstraint(topConstraint)
}
}
2019-03-07 14: 38: 59.176638-0500 Ежедневно [27852: 1408014] [LayoutConstraints] Иерархия представления не подготовленадля ограничения: при добавлении в представление элементы ограничения должны быть потомками этого представления (или самого представления).Это приведет к сбою, если необходимо разрешить ограничение до того, как будет собрана иерархия представлений.Перерыв на - [UIView (UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] для отладки.
2019-03-07 14: 38: 59.177816-0500 Ежедневно [27852: 1408014] [LayoutConstraints] Просмотр иерархии, неподготовленной для ограничения.Ограничение: иерархия контейнеров:> |> Представление не найдено в иерархии контейнеров:> Супервизор этого представления: НЕТ SUPERVIEW
2019-03-07 14: 38: 59.192176-0500 Ежедневно [27852: 1408014] *** Завершение работы приложения из-за неисследованного исключения 'NSGenericException'Причина:' Невозможно установить ограничение на просмотр.Ссылка ссылается на что-то извне поддерева представления?Это незаконно.ограничение: view:> '