Программно добавленная константа не работает

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

Представление было добавлено к доске объявлений для контроллера вида, но на самом деле не добавлено в представление контроллера представления до тех пор, пока оно не появится (см. Снимок экрана ниже).

введите описание изображения здесь

Я попытался добавить множество ограничений, но ни один из них не работал до сих пор. Теперь я упростил это единственное ограничение ниже, и даже это не сработает. Что я делаю не так?

@IBOutlet var loadingView: LoadingView! override func viewDidLoad() { super.viewDidLoad() displayLoadingView(true) } func displayLoadingView(display: Bool) { if display { view.addSubview(loadingView) let widthConstraint = NSLayoutConstraint(item: loadingView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 50.0) view.addConstraint(widthConstraint) } } 

set translatesAutoresizingMaskIntoConstraints = false для любого представления, которое вы устанавливаете ограничениями программно.

из яблочного документа :
translatesAutoresizingMaskIntoConstraints

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

Вы не устанавливаете все необходимые ограничения, и это может быть причиной. Рассмотрим следующий пример. Интерфейс MyView определен в автономном xib-файле. Надеюсь, поможет:

  class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() guard let myView = loadFromNib("MyView") else { return } view.addSubview(myView) myView.translatesAutoresizingMaskIntoConstraints = false view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-15-[myView]-15-|", options: NSLayoutFormatOptions.DirectionLeadingToTrailing, metrics: nil, views: ["myView": myView])) view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-15-[myView]-15-|", options: NSLayoutFormatOptions.DirectionLeadingToTrailing, metrics: nil, views: ["myView": myView])) } func loadFromNib(cls: String) -> UIView? { return NSBundle.mainBundle().loadNibNamed(cls, owner: nil, options: nil)[0] as? UIView } } 
  • TableView прокручивается за последнюю ячейку
  • Ограничения, не работающие с UITextView
  • В чем разница между NSLayoutAttributeBaseline и NSLayoutAttributeBottom?
  • Есть ли способ / функция iOS, чтобы проверить, включены ли ограничения настроек?
  • В чем причина остаточного вертикального интервала между «внутренним» просмотром и содержимым UITableViewCell с помощью раскадровки?
  • Добавление ограничений программно в ViewControllerCells
  • Предупреждение об ограничениях в консоли, я не могу понять
  • iOS Централизация ярлыка UITableViewCell с индикатором раскрытия
  • Анимация кадра UIView с ограничениями
  • Objective-C / Swift (iOS) Когда автоматические ограничения применяются в потоке View / ViewController?
  • SWRevealViewController - неуместные ограничения на салфетки
  • Давайте будем гением компьютера.