У меня есть UIView, который я добавляю программно со следующим кодом в viewDidLoad
dropMenuView = YNDropDownMenu(frame: CGRect(x: 0.0, y: 0, width: UIScreen.main.bounds.width, height: 40.0), dropDownViews: [typeView, brandView, priceView], dropDownViewTitles:["Type", "Brand", "Price"])
self.view.addSubview(dropMenuView)
Приведенный выше код создает представление с правильной шириной для текущей ориентации, но если пользователь изменяетих ориентация устройства, ширина обзора не обновляется.Я попытался добавить новое ограничение в viewWillTransitionTo:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
let widthConstraint = NSLayoutConstraint(item: dropMenuView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: self.view, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
dropMenuView.addConstraints([widthConstraint])
dropMenuView.layoutIfNeeded()
}
Я пробовал несколько мутаций в приведенном выше коде, пытаясь заставить его работать.Обычно я получаю сообщение об ошибке: «NSLayoutConstraint для>: неизвестный атрибут макета»
Я не могу не думать, что поступаю неправильно.Меняет ли путь добавление новых ограничений на ориентацию?Я попытался просто добавить ограничение равной ширины после добавления подпредставления, но я получаю ту же ошибку.Я никогда раньше не добавлял ограничений программно, поэтому для меня это неизведанные воды.Каков будет лучший подход здесь?