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

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

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

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

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

@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) } } 

  • Как скрыть UIView и удалить «пустое» пространство? -iOS / MonoTouch
  • UITableView при изменении ограничения, влияющего на высоту ячейки после удаления, заканчивается сломанными ограничениями
  • Ограничения на UIScrollView с подкачкой
  • Как создать автоматический макет с существующим пользовательским представлением с несколькими подзонами в iOS 6
  • Можно ли установить высоту и ширину UIView программно, не устанавливая источник?
  • где создавать ограничения автоопределения для подкласса uitableviewcell?
  • Внутренняя ошибка автоматической компоновки при удалении представления
  • Добавить «Вертикальный интервал» программно в быстром
  • 2 Solutions collect form web for “Программно добавленная константа не работает”

    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 } } 
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.